AutoTrain Advanced 现已支持实验跟踪

社区文章 发布于 2023 年 10 月 25 日

通过 Hugging Face 的 AutoTrain Advanced 库,在自定义数据集上训练大型语言模型变得更加容易。这种低代码解决方案使像您这样的 AI 研究人员能够免费在本地机器上微调 Llama 2、Falcon、Mistral 或任何其他大型语言模型 (LLM)。在底层,AutoTrain Advanced 利用 torch、transformers、peft 和 trl 等强大库来简化微调过程。这不仅简化了工作流程,还加速了训练,使其成为最快的可用选项之一。

公告

在我最近的 拉取请求 合并后,AutoTrain Advanced 的一个显著新增功能是它支持报告结果和训练日志。通过与流行的实验跟踪平台集成,例如 "azure_ml"、"clearml"、"codecarbon"、"comet_ml"、"dagshub"、"flyte"、"mlflow"、"neptune"、"tensorboard" 和 "wandb",该库在监控和分析您的实验方面提供了灵活性和选择。image/png

如何使用

要利用此报告功能,您可以使用 `--log` 参数。例如,指定 `--log wandb` 将无缝地将您的结果记录到 Weights & Biases。同样,您可以通过提供相应的参数来选择其他平台,例如 TensorBoard。如果您喜欢最小化日志记录并且只希望输出 CLI,则可以省略 `--log` 参数。

演示

为了展示这些变化,我们将在一个数学数据集上微调一个 LLM,并尝试在 GSM8k 基准测试 上实现 pass@1 的最先进结果。用于此微调过程的 A100 GPU 由 Weights & Biases 大方提供。我感谢来自 W&B 团队的 Soumik Rakshit 在此次集成中给予的持续支持。实验结果可以通过 Weights & Biases 此处进行跟踪。image/png

准备数据集

AutoTrain Advanced 要求您的 CSV 自定义数据集采用特定格式才能正常工作。您的训练文件必须包含一个“text”列,训练将在此列上进行。为了获得最佳结果,“text”列的数据应采用 **### Human: Question?### Assistant: Answer.** 格式。AutoTrain Advanced 所需数据集的一个很好的例子是 timdettmers/openassistant-guanaco。然而,如果您观察 MetaMathQA 数据集,它有 3 列——“query”、“response”和“type”。我们将通过删除“type”列并将“query”和“response”列的内容合并到一个“text”列中来预处理此数据集,格式为 **### Human: Query?### Assistant: Response.**。生成的数据集是 rishiraj/guanaco-style-metamath,它将用于训练。

调整超参数

AutoTrain Advanced 附带了一系列超参数,我们可以对其进行调整以获得最佳模型。虽然默认的超参数对所有人来说都是一个很好的起点,但我做了一些适合我们用例的更改。以下是我使用的超参数:

learning_rate = 2e-5
num_epochs = 3
batch_size = 4
block_size = 1024
trainer = "sft"
warmup_ratio = 0.03
weight_decay = 0.
gradient_accumulation = 4
lora_r = 16
lora_alpha = 32
lora_dropout = 0.05
logging_steps = 10
log = "wandb"

运行命令

如果您想将训练好的模型推送到您的 Hugging Face 账户中的私有仓库,可以通过设置 `hf_token` 变量来实现。您可以在此处找到您的 Hugging Face 写入令牌。以下是我使用的运行命令:

autotrain llm \
--train \
--model "HuggingFaceH4/zephyr-7b-alpha" \
--project-name "zephyr-math" \
--data-path data/ \
--text-column text \
--lr str(learning_rate) \
--batch-size str(batch_size) \
--epochs str(num_epochs) \
--block-size str(block_size) \
--warmup-ratio str(warmup_ratio) \
--lora-r str(lora_r) \
--lora-alpha str(lora_alpha) \
--lora-dropout str(lora_dropout) \
--weight-decay str(weight_decay) \
--gradient-accumulation str(gradient_accumulation) \
--logging-steps str(logging_steps) \
--log str(log) \
--fp16 \
--use-peft \
--use-int4 \
--merge-adapter \
--push-to-hub \
--token str(hf_token) \
--repo-id "rishiraj/zephyr-math"

结果

请查看 W&B 报告,以获取微调模型的详细概述,包括其在 ARC、HellaSwag、MMLU、TruthfulQA 等各种测试中的基准分数。我还包含了与其他开源 LLM 在 GSM8k Pass@1 和 MATH Pass@1 上的比较。rishiraj/zephyr-math 是在 MetaMathQA 数据集上完全微调并基于强大的 HuggingFaceH4/zephyr-7b-alpha 模型构建的 LLM(根据 Apache 许可证 2.0 发布)。

结论

Hugging Face 的 AutoTrain Advanced 是一款多功能工具,可用于微调大型语言模型。它结合了简单性、效率和广泛的日志支持,使其成为 AI 研究人员和开发人员的宝贵资产。通过与流行的实验跟踪平台无缝集成,它有助于有效地监控和分析模型训练。

实验是人工智能研究的核心,像 AutoTrain Advanced 这样的工具通过提供易于访问且功能强大的模型微调解决方案,为推动该领域的发展做出了重要贡献。如果您觉得这篇文章有用,请在我的 HF 个人资料 上关注我。

社区

注册登录 评论