透過低秩適應 (LoRA) 輕鬆評估和微調 LLaMA 模型。
更新:
在
dev
分支上,有一個新的聊天 UI 和一個新的演示模式配置,作為演示新模型的簡單方法。然而,新版本還沒有微調功能,而且不向後相容,因為它使用了新的方式來定義模型的載入方式,並且還使用了新的提示模板格式(來自LangChain)。
有關更多信息,請參閱:#28。
LLM.Tuner.Chat.UI.in.Demo.Mode.mp4
請參閱 Hugging Face 上的演示*僅提供 UI 演示。若要嘗試訓練或文字生成,請在 Colab 上運行。
一鍵啟動並在 Google Colab 中使用標準 GPU 運行時運行。
在 Google Drive 中載入和儲存資料。
評估儲存在資料夾或 Hugging Face 中的各種 LLaMA LoRA 模型。
在基本模型之間切換,例如decapoda-research/llama-7b-hf
、 nomic-ai/gpt4all-j
、 databricks/dolly-v2-7b
、 EleutherAI/gpt-j-6b
或EleutherAI/pythia-6.9b
。
使用不同的提示範本和訓練資料集格式微調 LLaMA 模型。
從資料夾載入 JSON 和 JSONL 資料集,甚至將純文字直接貼到 UI 中。
支援斯坦福羊駝種子任務、阿爾帕卡數據和OpenAI“提示”-“完成”格式。
使用提示範本保持資料集乾燥。
有多種方法可以運行此應用程式:
在 Google Colab 上運行:最簡單的入門方法,您只需要一個 Google 帳戶。標準(免費)GPU 運行時足以運行微批量大小為 8 的生成和訓練。
透過 SkyPilot 在雲端服務上執行:如果您有雲端服務(Lambda Labs、GCP、AWS 或 Azure)帳戶,則可以使用 SkyPilot 在雲端服務上執行應用程式。可以安裝雲端儲存桶來保存您的資料。
本地運行:取決於您擁有的硬體。
請參閱影片以取得逐步說明。
開啟此 Colab Notebook 並選擇執行時間 > 全部執行( ⌘/Ctrl+F9
)。
系統將提示您授權 Google 雲端硬碟存取權限,因為 Google 雲端硬碟將用於儲存您的資料。有關設定和更多信息,請參閱“配置”/“Google 雲端硬碟”部分。
運行大約 5 分鐘後,您將在「Launch」/「Start Gradio UI」部分的輸出中看到公共 URL(例如Running on public URL: https://xxxx.gradio.live
)。在瀏覽器中開啟 URL 以使用該應用程式。
依照 SkyPilot 安裝指南後,建立.yaml
來定義執行應用程式的任務:
# llm-tuner.yamlresources: 加速器: A10:1 # 1x NVIDIA A10 GPU,在 Lambda Cloud 上約為 0.6 美元/小時。執行「sky show-gpus」以取得支援的 GPU 類型,並執行「sky show-gpus [GPU_NAME]」以取得 GPU 類型的詳細資訊。 雲: lambda # 可選;如果省略,SkyPilot 將自動選擇最便宜的 cloud.file_mounts: # 掛載將用作資料目錄的現有雲端儲存。 #(儲存訓練資料集訓練模型) # 有關詳細信息,請參閱 https://skypilot.readthedocs.io/en/latest/reference/storage.html。 /data:name: llm-tuner-data # 確保此名稱是唯一的或您擁有此儲存桶。如果不存在,SkyPilot 將嘗試使用此名稱建立儲存桶。 conda create -q python=3.8 -n llm-tuner -y conda activate llm-tuner # 克隆 LLaMA-LoRA Tuner 儲存庫並安裝其相依性 [ ! -d llm_tuner ] && git clone https://github.com/zetavg/LLaMA-LoRA-Tuner.git llm_tuner echo '安裝依賴項...' pip install -r llm_tuner/requirements.lock.txt # 可選:安裝wandb 到啟用權重和偏差日誌記錄pip install wandb # 可選:修補bitsandbytes以解決錯誤“libbitsandbytes_cpu.so: undefined symbol: cget_col_row_stats” BITSANDBYTES_LOCATION="$(pip show bitsand; ')/ bitsandbytes" [ -f "$BITSANDBYTES_LOCATION/libbitsandbytes_cpu.so" ] && [ ! -f "$BITSANDBYTES_LOCATION/libbitsandbytes_cpu.so.bak" ] && [ -f "$BITSANDBYTES_LOCATION/libbitsandbytes_cuda121.so" ] && echo '修補bitsandbytespv "$D. &m& mv "$A/BY BITSANDBYTES_LOCATION/libbitsandbytes_cpu.so.bak" && cp "$BITSANDBYTES_LOCATION/libbitsandbytes_cuda121.so" "$BITSANDBYTES_LOCATION/libbitsandbytes_cuda.so" conda install - cudatoolkit_cchopu.so" conda install - cudatoolkit' 已依賴項'。 # 可選:安裝並設定Cloudflare Tunnel,以使用自訂網域將應用程式公開至網際網路[ -f /data/secrets/cloudflared_tunnel_token.txt ] && echo "Installing Cloudflare" && curl -L --output cloudflared.deb https : //github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && sudo dpkg -i cloudflared.deb && sudo cloudflared 服務卸載 || : && sudo cloudflared service install "$(cat /data/secrets/cloudflared_tunnel_token.txt | tr -d 'n')" # 可選:預下載模型 echo "預先下載基礎模型,這樣你就不必等待一旦應用程式準備就緒...... 」python llm_tuner/download_base_model.py --base_model_names='decapoda-research/llama-7b-hf,nomic-ai/gpt4all-j'# 啟動應用程式。 `hf_access_token`、`wandb_api_key` 和 `wandb_project` 是可選的。 conda 啟動 llm-tuner python llm_tuner/app.py --data_dir='/data' --hf_access_token="$([ -f /data/secrets/hf_access_token.txt ] && cat /data/secrets/hf_access_token. -d 'n')" --wandb_api_key="$([ -f /data/secrets/wandb_api_key.txt ] && cat /data/secrets/wandb_api_key.txt | tr -d 'n')" --wandb_project=' llm-tuner' --timezone='大西洋/雷克雅未克' --base_model='decapoda-research/llama-7b-hf' --base_model_choices='decapoda-research/llama-7b-hf,nomic-ai /gpt4all-j ,databricks/dolly-v2-7b'--共享
然後啟動叢集來運行任務:
sky launch -c llm-tuner llm-tuner.yaml
-c ...
是一個可選標誌,用於指定群集名稱。如果未指定,SkyPilot 將自動產生一個。
您將在終端機中看到應用程式的公共 URL。在瀏覽器中開啟 URL 以使用該應用程式。
請注意,退出sky launch
只會退出日誌流,不會停止任務。您可以使用sky queue --skip-finished
查看正在執行或掛起的任務的狀態,使用sky logs <cluster_name> <job_id>
連接回日誌流,使用sky cancel <cluster_name> <job_id>
停止任務。
完成後,執行sky stop <cluster_name>
以停止叢集。若要終止集群,請執行sky down <cluster_name>
。
完成後請記住停止或關閉集群,以避免產生意外費用。運行sky cost-report
查看叢集的成本。
若要登入雲端計算機,請執行ssh <cluster_name>
,例如ssh llm-tuner
。
如果您本機上安裝了sshfs
,您可以透過執行下列指令將雲端機器的檔案系統掛載到本機上:
mkdir -p /tmp/llm_tuner_server && umount /tmp/llm_tuner_server || : && sshfs llm-tuner:/ /tmp/llm_tuner_server
conda create -y python=3.8 -n llm-tuner conda 啟動 llm-tuner
pip install -r requests.lock.txt python app.py --data_dir='./data' --base_model='decapoda-research/llama-7b-hf' --timezone='大西洋/雷克雅未克' --share
您將在終端機中看到應用程式的本機和公用 URL。在瀏覽器中開啟 URL 以使用該應用程式。
如需更多選項,請參閱python app.py --help
。
若要在不載入語言模型的情況下測試 UI,請使用--ui_dev_mode
標誌:
python app.py --data_dir='./data' --base_model='decapoda-research/llama-7b-hf' --share --ui_dev_mode
要使用 Gradio 自動重新加載,需要
config.yaml
文件,因為不支援命令列參數。有一個範例檔案可以開始:cp config.yaml.sample config.yaml
。然後,只需運行gradio app.py
。
請參閱 YouTube 上的影片。
https://github.com/tloen/alpaca-lora
https://github.com/lxe/simple-llama-finetuner
…
待定