torchtune CLI¶
本页是使用 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 <path>
命令从 Hugging Face Hub 下载任何模型。
--output-dir |
保存模型的目录。 |
--output-dir-use-symlinks |
与 output-dir 一起使用。如果设置为“auto”,将使用缓存目录,并且文件将根据其大小复制到本地目录或链接到本地目录。如果设置为 True,将创建符号链接,无论文件大小如何。如果设置为 False,文件将从缓存中复制(如果已存在)或从 Hub 下载,不会缓存。 |
--hf-token |
Hugging Face API 令牌。对于 Llama 等受保护模型是必需的。 |
--ignore-patterns |
如果提供,则不下载与任何模式匹配的文件。默认情况下,忽略 safetensors 文件以避免下载重复的权重。 |
$ 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
...
下载受保护模型
许多最近从 Meta 或 MistralAI 等组织发布的大型预训练模型要求你在允许下载其模型之前同意使用条款和条件。如果是这种情况,你可以指定一个 Hugging Face 访问令牌。
你可以在 此处找到访问令牌。
$ 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 ""
Successfully downloaded model repo and wrote to the following locations:
./model/config.json
./model/README.md
./model/model-00001-of-00030.safetensors
...
注意
仅仅因为可以下载模型并不意味着它将与 torchtune 的内置食谱或配置开箱即用。有关受支持模型系列和架构的列表,请参阅 models。
列出内置食谱和配置¶
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 <recipe|config> <path>
命令将内置食谱和配置复制到提供的地址。这使你能够创建库食谱或配置的本地副本以直接进行编辑。
-n, --no-clobber |
如果目标已存在,则不要覆盖目标 |
--make-parents |
如果目标的父目录不存在,则创建父目录。如果未设置为 True,如果父目录不存在,将报错 |
$ tune cp lora_finetune_distributed .
Copied file to ./lora_finetune_distributed.py
运行食谱¶
tune run <recipe> --config <config>
是 torchrun 的包装器。 tune run
允许你指定一个内置食谱或配置(通过名称),或者通过路径使用你的本地食谱/配置。
运行调优食谱
tune run lora_finetune_single_device --config llama3/8B_lora_single_device
指定分布式(torchrun)参数
tune run
支持通过将直接传递给 torchrun 的参数启动分布式运行。这遵循 torchrun 使用的模式,即在脚本(食谱)之前指定分布式和主机机器标志。有关分布式设置可用标志的完整列表,请参阅 torchrun 文档。
一些常用标志
--nproc-per-node |
每个节点的工作程序数量;支持的值:[auto, cpu, gpu, int]。 |
--nnodes |
节点数,或节点范围,形式为 |
--max-restarts |
工作程序组在失败之前允许的最大重启次数。 |
--rdzv-backend |
会合后端。 |
--rdzv-endpoint |
会合后端端点;通常形式为 |
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 <recipe> --config <config>
。
运行自定义(本地)食谱和配置
要将 tune run
与你自己的本地食谱和配置一起使用,只需将文件路径而不是名称传递给 run 命令。你可以将自定义食谱与 torchtune 配置混合匹配,反之亦然,或者你可以同时使用自定义配置和食谱。
tune run my/fancy_lora.py --config my/configs/8B_fancy_lora.yaml
覆盖配置
你可以使用键=值格式从命令行覆盖现有的参数。假设你想将训练轮次设置为 1。有关配置覆盖的更多信息,请参阅 此处。
tune run <RECIPE> --config <CONFIG> epochs=1
验证配置¶
tune validate <config>
命令将验证你的配置格式是否正确。
# 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!