torchtune 命令行界面¶
本页面是关于使用torchtune CLI的文档 - 这是一种方便的方式来下载模型、查找和复制相关的配方/配置,并运行配方。当您安装torchtune时,它会自动可用。
入门指南¶
--help 选项将显示通过 torchtune CLI 可用的所有可能命令,并附带每个命令的简短描述。
$ tune --help
usage: tune [-h] {download,ls,cp,run,validate} ...
Welcome to the torchtune CLI!
options:
-h, --help show this help message and exit
subcommands:
{download,ls,cp,run,validate}
download Download a model from the Hugging Face Hub.
ls List all built-in recipes and configs
...
--help 选项非常方便,可以获取有关任何命令的更多详细信息。您可以随时使用它来列出所有可用的选项及其详细信息。例如,tune download --help 提供了有关如何使用 CLI 下载文件的更多信息。
下载模型¶
tune download 命令从 Hugging Face 或 Kaggle 模型中心下载任何模型。
--output-dir |
保存模型的目录。注意:当–source设置为kaggle时,此选项尚不支持。 |
--output-dir-use-symlinks |
与output-dir一起使用。如果设置为‘auto’,将使用缓存目录,并且文件将根据其大小复制或符号链接到本地目录。如果设置为True,将创建一个符号链接,无论文件大小如何。如果设置为False,文件将从缓存中复制(如果已存在)或从Hub下载且不缓存。 |
--hf-token |
Hugging Face API 令牌。需要用于像 Llama 这样的受限模型。 |
--ignore-patterns |
如果提供,匹配任何模式的文件将不会被下载。默认情况下会忽略safetensors文件,以避免下载重复的权重。 |
--来源 {huggingface,kaggle} |
如果提供,从指定的源中心提供的 |
--kaggle-用户名 |
用于身份验证的Kaggle用户名。对于私有模型或像Llama2这样的受限模型是必需的。 |
--kaggle-api-key |
Kaggle API 密钥。私有模型或受限模型(如 Llama2)需要此密钥。您可以在 https://kaggle.com/settings 找到您的 API 密钥。 |
$ tune download meta-llama/Meta-Llama-3-8B-Instruct
Successfully downloaded model repo and wrote to the following locations:
./model/config.json
./model/README.md
./model/model-00001-of-00002.bin
...
$ tune download metaresearch/llama-3.2/pytorch/1b --source kaggle
Successfully downloaded model repo and wrote to the following locations:
/tmp/llama-3.2/pytorch/1b/tokenizer.model
/tmp/llama-3.2/pytorch/1b/params.json
/tmp/llama-3.2/pytorch/1b/consolidated.00.pth
下载一个受控模型
最近,Meta或MistralAI等组织发布的许多大型预训练模型要求您在下载模型之前同意使用条款和条件。如果是这种情况,您可以指定一个Hugging Face访问令牌。
您可以在此处找到访问令牌here。
$ tune download meta-llama/Meta-Llama-3-8B-Instruct --hf-token <TOKEN>
Successfully downloaded model repo and wrote to the following locations:
./model/config.json
./model/README.md
./model/model-00001-of-00002.bin
...
注意
如果您愿意,您也可以使用huggingface-cli login在您的机器上永久登录到Hugging Face Hub。
tune download命令将从您的环境中提取访问令牌。
指定您不想下载的模型文件
一些检查点目录可能非常大,每次下载所有文件可能会消耗大量带宽和本地存储空间,即使你可能不需要其中的很多文件。当相同的检查点以不同格式存在时,这种情况尤其常见。你可以指定忽略的模式,以防止下载具有匹配名称的文件。默认情况下,我们忽略safetensor文件,但如果你想包含所有文件,可以传入一个空字符串。
$ tune download meta-llama/Meta-Llama-3-8B-Instruct --hf-token <TOKEN> --ignore-patterns None
Successfully downloaded model repo and wrote to the following locations:
./model/config.json
./model/README.md
./model/model-00001-of-00030.safetensors
...
注意
仅仅因为一个模型可以下载,并不意味着它可以与torchtune的内置配方或配置开箱即用。有关支持的模型系列和架构的列表,请参见模型。
列出内置的配方和配置¶
tune ls 命令列出了 torchtune 中所有内置的配方和配置。
$ tune ls
RECIPE CONFIG
full_finetune_single_device llama2/7B_full_low_memory
code_llama2/7B_full_low_memory
llama3/8B_full_single_device
mistral/7B_full_low_memory
phi3/mini_full_low_memory
full_finetune_distributed llama2/7B_full
llama2/13B_full
llama3/8B_full
llama3/70B_full
...
复制内置配方或配置¶
tune cp 命令将内置的配方和配置文件复制到指定的位置。这允许您制作库配方或配置的本地副本,以便直接进行编辑。请参阅 这里 查看如何使用此命令的示例。
-n, --no-clobber |
如果目标已经存在,请不要覆盖 |
--创建父目录 |
如果目标目录的父目录不存在,则创建它们。如果未设置为True,当父目录不存在时会报错。 |
$ tune cp lora_finetune_distributed .
Copied file to ./lora_finetune_distributed.py
运行一个配方¶
tune run 是围绕 torchrun 的一个封装。tune run 允许你通过名称或路径指定内置的配方或配置,以使用你本地的配方/配置。
运行调优配方
tune run lora_finetune_single_device --config llama3/8B_lora_single_device
指定分布式(torchrun)参数
tune run 支持通过直接将参数传递给 torchrun 来启动分布式运行。这遵循了 torchrun 的模式,即在脚本(配方)之前指定分布式和主机标志。有关分布式设置的完整可用标志列表,请参阅 torchrun 文档。
一些常见的标志:
--每个节点的进程数 |
每个节点的工作者数量;支持的值:[auto, cpu, gpu, int]。 |
--nnodes |
节点数量,或节点范围的形式为 |
--max-restarts |
在失败之前,工作组的最大重启次数。 |
--rdzv-backend |
Rendezvous 后端。 |
--rdzv-endpoint |
Rendezvous 后端端点;通常形式为 |
tune run --nnodes=1 --nproc-per-node=4 lora_finetune_distributed --config llama3/8B_lora
注意
如果在配方之前没有提供参数,tune 将绕过 torchrun 并直接使用 python 启动。这可以简化在不需要分布式时运行和调试配方。如果你想使用 torchrun 启动,但只使用单个设备,你可以指定 tune run --nnodes=1 --nproc-per-node=1 。
运行自定义(本地)配方和配置
要使用tune run与您自己的本地配方和配置,只需将文件路径而不是名称传递给运行命令。您可以混合使用自定义配方与torchtune配置,反之亦然,或者您可以同时使用自定义配置和配方。
tune run my/fancy_lora.py --config my/configs/8B_fancy_lora.yaml
覆盖配置
你可以使用key=value格式从命令行覆盖现有参数。假设你想将训练周期数设置为1。 有关配置覆盖的更多信息可以在这里找到。
tune run <RECIPE> --config <CONFIG> epochs=1
验证配置¶
tune validate 命令将验证您的配置格式是否正确。
# If you've copied over a built-in config and want to validate custom changes
$ tune validate my_configs/llama3/8B_full.yaml
Config is well-formed!