我使用 OpenAI ChatGPT-4 一段時間了。

對此我沒什麼好說的。

但有時,這還不夠。

Winglang中,我們希望使用 OpenAI 和 ChatGPT-4 根據我們的文件回答人們的問題。

您的選擇是:

  • 使用OpenAI 助理或任何其他基於向量的資料庫 (RAG)。由於 Wing 看起來像 JS,所以效果很好,但仍然有很多錯誤。

  • 將整個文件傳遞到上下文視窗的成本非常高。

很快,我們意識到這是行不通的。

是時候舉辦我們自己的法學碩士課程了。

問題


您的 LLM 資料集

在訓練模型之前,我們需要建立用於訓練模型的資料。在我們的例子中,是 Winglang 文件。我會做一些非常簡單的事情。

  1. 從網站地圖中提取所有 URL,設定 GET 請求並收集內容。

  2. 解析它;我們希望將所有 HTML 轉換為可讀內容。

  3. 使用 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新資料夾中。


Autotrain,您的模型

我的電腦很弱,所以我決定使用更小的模型 - 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 的工具。

我認為它很快就會成為法學碩士世界的標準,所以請確保你給這個庫加註星標,以便以後可以使用它。

  1. 下載最新的KitOps 版本安裝它

  2. 轉到模型資料夾並執行命令來打包您的 LLM:

kit pack .
  1. 您也可以透過執行將其推送到 Docker hub
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


共有 0 則留言