為規模和效率而建構的聲明式深度學習框架。
重要的
我們的社群已轉移到 Discord——請加入我們!
Ludwig 是一個低程式碼框架,用於建立LLM和其他深度神經網路等自訂AI 模型。
主要特點:
Ludwig 由 Linux 基金會人工智慧與數據主辦。
從 PyPi 安裝。請注意,Ludwig 需要 Python 3.8+。
pip install ludwig
或安裝所有可選依賴項:
pip install ludwig[full]
請參閱貢獻以取得更詳細的安裝說明。
想快速瀏覽 Ludwig 0.8 的一些功能嗎?看看這本 Colab 筆記本
想要微調 Llama-2 或 Mistral?看看這些筆記本:
有關完整的教程,請查看官方入門指南,或查看端到端範例。
讓我們微調預先訓練的 LLaMA-2-7b 大型語言模型,使其像聊天機器人一樣遵循指令(「指令調整」)。
我們將使用斯坦福羊駝資料集,該資料集將被格式化為類似表格的文件,如下所示:
操作說明 | 輸入 | 輸出 |
---|---|---|
給予保持健康的三個秘訣。 | 1.均衡飲食,確保包括... | |
將下面給出的項目依序排列... | 蛋糕,我,吃 | 我吃蛋糕。 |
寫一篇關於一位著名人物的介紹段落... | 米歇爾·歐巴馬 | 米歇爾·歐巴馬是一位鼓舞人心的女性,她... |
… | … | … |
使用以下內容建立名為model.yaml
YAML 設定檔:
model_type : llm
base_model : meta-llama/Llama-2-7b-hf
quantization :
bits : 4
adapter :
type : lora
prompt :
template : |
Below is an instruction that describes a task, paired with an input that may provide further context.
Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Input:
{input}
### Response:
input_features :
- name : prompt
type : text
output_features :
- name : output
type : text
trainer :
type : finetune
learning_rate : 0.0001
batch_size : 1
gradient_accumulation_steps : 16
epochs : 3
learning_rate_scheduler :
decay : cosine
warmup_fraction : 0.01
preprocessing :
sample_ratio : 0.1
backend :
type : local
現在讓我們訓練模型:
export HUGGING_FACE_HUB_TOKEN = " <api_token> "
ludwig train --config model.yaml --dataset " ludwig://alpaca "
讓我們建立一個神經網路來預測某個影評人對爛番茄的評論是正面還是負面。
我們的資料集將是一個 CSV 文件,如下所示:
電影標題 | 內容評級 | 流派 | 運行時 | 頂級評論家 | 評論內容 | 受到推崇的 |
---|---|---|---|---|---|---|
救我們脫離邪惡 | 右 | 動作與冒險、恐怖 | 117.0 | 真的 | 導演史考特德瑞克森和他的合著者保羅哈里斯博德曼以平淡無奇的恐懼呈現了一部例行程序。 | 0 |
芭芭拉 | PG-13 | 藝術之家與國際、戲劇 | 105.0 | 錯誤的 | 不知何故,在這個激動人心的敘述中,芭芭拉成功地堅持了她的原則、人性和勇氣,並為拯救一名持不同政見的少女而奮鬥,她的生活被共產黨試圖摧毀。 | 1 |
可怕的老闆 | 右 | 喜劇 | 98.0 | 錯誤的 | 這些老闆無法證明謀殺或持久的喜劇記憶是正當的,從而致命地損害了一場本來可以很棒但最終只是平庸的鬧劇。 | 0 |
… | … | … | … | … | … | … |
從此處下載資料集的範例。
wget https://ludwig.ai/latest/data/rotten_tomatoes.csv
接下來建立一個名為model.yaml
YAML 設定文件,其中包含以下內容:
input_features :
- name : genres
type : set
preprocessing :
tokenizer : comma
- name : content_rating
type : category
- name : top_critic
type : binary
- name : runtime
type : number
- name : review_content
type : text
encoder :
type : embed
output_features :
- name : recommended
type : binary
就是這樣!現在讓我們訓練模型:
ludwig train --config model.yaml --dataset rotten_tomatoes.csv
快樂建模
嘗試將 Ludwig 應用於您的資料。如果您有任何疑問,請聯絡 Discord。
最小的機器學習樣板
Ludwig 開箱即用地處理機器學習的工程複雜性,使研究科學家能夠專注於建立最高抽象層級的模型。 torch.nn.Module
模型的資料預處理、超參數最佳化、設備管理和分散式訓練完全免費。
輕鬆建立您的基準
創建最先進的基準並將其與新模型進行比較是一個簡單的配置變更。
輕鬆地將新架構應用於多個問題和資料集
在 Ludwig 支援的廣泛任務和資料集中應用新模型。 Ludwig 包含一個可供任何使用者存取的完整基準測試工具包,只需簡單的配置即可在多個資料集上執行多個模型的實驗。
高度可配置的資料預處理、建模和指標
模型架構、訓練循環、超參數搜尋和後端基礎設施的任何和所有方面都可以修改為聲明性配置中的附加字段,以自訂管道以滿足您的要求。有關可配置內容的詳細信息,請查看 Ludwig 配置文件。
開箱即用的多模式、多工學習
將表格資料、文字、圖像甚至音訊混合併匹配到複雜的模型配置中,而無需編寫程式碼。
豐富的模型導出和跟踪
使用 Tensorboard、Comet ML、Weights & Biases、MLFlow 和 Aim Stack 等工具自動追蹤所有試驗和指標。
自動將訓練擴展到多 GPU、多節點集群
從本地機器上的訓練轉移到雲端,無需更改程式碼。
適用於最先進模型的低程式碼接口,包括預先訓練的 Huggingface Transformer
Ludwig 還原生地與預先訓練的模型集成,例如 Huggingface Transformers 中提供的模型。使用者可以從大量最先進的預訓練 PyTorch 模型中進行選擇,而無需編寫任何程式碼。例如,使用 Ludwig 訓練基於 BERT 的情緒分析模型非常簡單:
ludwig train --dataset sst5 --config_str " {input_features: [{name: sentence, type: text, encoder: bert}], output_features: [{name: label, type: category}]} "
AutoML 的低程式碼接口
Ludwig AutoML 允許使用者透過僅提供資料集、目標列和時間預算來獲得經過訓練的模型。
auto_train_results = ludwig . automl . auto_train ( dataset = my_dataset_df , target = target_column_name , time_limit_s = 7200 )
輕鬆生產
Ludwig 讓深度學習模型(包括在 GPU 上)的服務變得容易。為經過訓練的 Ludwig 模型啟動 REST API。
ludwig serve --model_path=/path/to/model
Ludwig 支援將模型匯出到高效的 Torchscript 套件。
ludwig export_torchscript -–model_path=/path/to/model
閱讀我們關於 Ludwig、聲明式 ML 和 Ludwig 的 SoTA 基準的出版物。
詳細了解 Ludwig 的工作原理、入門方法以及更多範例。
如果您有興趣做出貢獻,有問題、意見或想法要分享,或者您只是想了解情況,請考慮加入我們的社群 Discord 並在 X 上關注我們!
Ludwig 是一個積極管理的開源項目,它依賴像您一樣的人的貢獻。考慮加入 Ludwig 貢獻者的活躍小組,使 Ludwig 成為一個更易於訪問且功能豐富的框架,供每個人使用!