我使用 OpenAI ChatGPT-4 一段時間了。
對此我沒什麼好說的。
但有時,這還不夠。
在Winglang中,我們希望使用 OpenAI 和 ChatGPT-4 根據我們的文件回答人們的問題。
您的選擇是:
使用OpenAI 助理或任何其他基於向量的資料庫 (RAG)。由於 Wing 看起來像 JS,所以效果很好,但仍然有很多錯誤。
將整個文件傳遞到上下文視窗的成本非常高。
很快,我們意識到這是行不通的。
是時候舉辦我們自己的法學碩士課程了。
在訓練模型之前,我們需要建立用於訓練模型的資料。在我們的例子中,是 Winglang 文件。我會做一些非常簡單的事情。
從網站地圖中提取所有 URL,設定 GET 請求並收集內容。
解析它;我們希望將所有 HTML 轉換為可讀內容。
使用 ChatGPT 4 執行它,將內容轉換為 CSV 作為資料集。
它應該是這樣的:
完成後,儲存包含一列名為text
的 CSV 並新增問題和答案。我們稍後會用到它。它應該看起來像這樣:
text
<s>[INST]How to define a variable in Winglang[/INST] let a = 'Hello';</s>
<s>[INST]How to create a new lambda[/INST] bring cloud; let func = new cloud.Function(inflight () => { log('Hello from the cloud!'); });</s>
將其保存在電腦上名為data
新資料夾中。
我的電腦很弱,所以我決定使用更小的模型 - 7b 參數: mistralai/Mistral-7B-v0.1
訓練模型的方法有數百萬種。我們將使用 Huggingface Autotrain。我們將使用他們的 CLI,而不執行任何 Python 程式碼🚀
當您使用 Huggingface 的 Autotrain 時,您可以在電腦上訓練它(這裡是我的方法)或在他們的伺服器上訓練它(付費)並訓練更大的模型。
我的舊 Macbook Pro M1 2021 沒有 GPU。
讓我們安裝自動訓練。
pip install -U autotrain-advanced
autotrain setup > setup_logs.txt
然後,我們需要做的就是執行 autotrain 指令:
autotrain llm \
--train \
--model "mistralai/Mistral-7B-Instruct-v0.2" \
--project-name "autotrain-wing" \
--data-path data/ \
--text-column text \
--lr "0.0002" \
--batch-size "1" \
--epochs "3" \
--block-size "1024" \
--warmup-ratio "0.1" \
--lora-r "16" \
--lora-alpha "32" \
--lora-dropout "0.05" \
--weight-decay "0.01" \
--gradient-accumulation "4" \
--quantization "int4" \
--mixed-precision "fp16" \
--peft
完成後,您將擁有一個名為“autotrain-wing”的新目錄,其中包含新的微調模型🚀
要使用模型,請先執行:
pip install transformers torch
完成後,使用以下程式碼建立一個名為 invoke.py 的新 Python 檔案:
from transformers import pipeline
# Path to your local model directory
model_path = "./autotrain-wing"
# Load the model and tokenizer from the local directory
classifier = pipeline("text-classification", model=model_path, tokenizer=model_path)
# Example text to classify
text = "Example text to classify"
result = classifier(text)
print(result)
然後您可以透過執行 CLI 命令來執行它:
python invoke.py
你就完成了🚀
我仍在學習法學碩士。
我意識到的一件事是追蹤模型的變化並不容易。
你不能真正將它與 Git 一起使用,因為模型可以達到非常大的大小 > 100 GB;這沒有多大意義——git 不能很好地處理它。
更好的方法是使用名為KitOps 的工具。
我認為它很快就會成為法學碩士世界的標準,所以請確保你給這個庫加註星標,以便以後可以使用它。
kit pack .
kit pack . -t [your registry address]/[your repository name]/mymodelkit:latest
💡 要了解如何使用 DockerHub,請檢查此
{% cta https://github.com/jozu-ai/kitops %}⭐️ Star KitOps,以便您稍後可以再次找到它⭐️{% endcta %}
我建立了一個新的 YouTube 頻道,主要是關於開源行銷:)
(例如如何獲得星星、叉子和客戶端)
如果您對此感興趣,請隨時在這裡訂閱:
https://www.youtube.com/@nevo-david?sub\_confirmation=1
原文出處:https://dev.to/github20k/i-fine-tuned-my-model-on-a-new-programming-language-you-can-do-it-too-449