为规模和效率而构建的声明式深度学习框架。
重要的
我们的社区已转移到 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 成为一个更易于访问且功能丰富的框架,供每个人使用!