torchtune 命令行界面¶
本页是使用 torchtune CLI 的文档 - 一种方便的 下载模型,查找并复制相关配方/配置,然后运行配方。它会自动 在安装 Torchtune 时可用。
开始¶
该选项将显示通过 torchtune CLI 提供的所有可能命令,
以及每个实例的简短描述。--help
$ 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
...
该选项便于获取有关任何命令的更多详细信息。您可以随时使用它来列出所有
可用选项及其详细信息。例如,提供了有关如何操作的更多信息
以使用 CLI 下载文件。--help
tune download --help
下载模型¶
该命令从 Hugging Face Hub 下载任何模型。tune download <path>
--输出目录 |
保存模型的目录。 |
--output-dir-use-symlinks |
与 output-dir 一起使用。如果设置为 'auto',则将使用缓存目录,并且文件将根据其大小复制或符号链接到本地目录。它设置为 True,则无论文件大小如何,都会创建一个符号链接。如果设置为 False,则将从缓存中复制文件(如果已存在),或者从 Hub 下载但不缓存。 |
--hf-token |
Hugging Face API 令牌。像 Llama 这样的门控模型需要。 |
--忽略模式 |
如果提供,则不会下载与任何模式匹配的文件。默认忽略 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
...
注意
如果您愿意,您还可以使用 永久登录计算机上的 Hugging Face Hub。
该命令将从您的环境中提取访问令牌。huggingface-cli login
tune download
指定您不想下载的模型文件
一些 checkpoint 目录可能非常大,并且每次下载所有文件都会占用大量带宽和本地存储空间,即使您可能这样做 不需要很多。当相同的检查点以不同的格式存在时,这种情况尤其常见。您可以指定要忽略的模式以防止下载文件 替换为匹配的名称。默认情况下,我们会忽略 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 的 内置配方或配置。有关支持的模型系列和体系结构的列表,请参阅 models。
列出内置配方和配置¶
该命令列出了 torchtune 中的所有内置配方和配置。tune ls
$ 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
...
复制内置配方或配置¶
该命令将内置配方和配置复制到提供的位置。这允许您创建库的本地副本
recipe 或 config 直接为自己编辑。有关如何使用此命令的示例,请参阅此处。tune cp <recipe|config> <path>
-n, --no-clobber |
如果目标已存在,则不覆盖目标 |
--make-parents |
如果父目录不存在,请为 destination 创建父目录。如果未设置为 True,则如果父目录不存在,将出错 |
$ tune cp lora_finetune_distributed .
Copied file to ./lora_finetune_distributed.py
运行配方¶
它是 torchrun 的包装器。 允许您指定
按名称或路径的内置配方或配置,以使用本地配方/配置。tune run <recipe> --config <config>
tune run
运行 Tune 配方
tune run lora_finetune_single_device --config llama3/8B_lora_single_device
指定分布式 (torchrun) 参数
tune run
支持通过将配方前面的参数直接传递给 TorchRun 来启动分布式运行。这遵循 torchrun 使用的模式
在脚本 (配方) 之前指定分布式和主机标志。有关分布式设置的可用标志的完整列表,请参阅 torchrun 文档。
一些常见的标志:
--nproc-每个节点 |
每个节点的工作线程数;支持的值:[auto, cpu, gpu, int]。 |
--nnodes |
节点数,或格式为 <minimum_nodes>:<maximum_nodes> 的节点范围。 |
--max-restarts |
失败前工作组重启的最大次数。 |
--rdzv-后端 |
Rendezvous backend. |
--rdzv-端点 |
Rendezvous backend endpoint;通常采用 <host>:<port> 的形式。 |
tune run --nnodes=1 --nproc-per-node=4 lora_finetune_distributed --config llama3/8B_lora
注意
如果在配方之前没有提供任何参数,则 tune 将绕过 torchrun 并直接使用 .这可以简化配方的运行和调试
当不需要 distributed 时。如果要使用 torchrun 启动,但只使用单个设备,则可以指定 .python
tune run --nnodes=1 --nproc-per-node=1 <recipe> --config <config>
运行自定义 (本地) 配方和配置
要与您自己的本地配方和配置一起使用,只需将文件路径而不是名称传递给 run 命令即可。您可以将自定义配方与
torchtune 配置,反之亦然,或者您可以同时使用自定义配置和配方。tune run
tune run my/fancy_lora.py --config my/configs/8B_fancy_lora.yaml
覆盖配置
您可以使用 key=value 格式从命令行覆盖现有参数。假设您要将训练 epoch 的数量设置为 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!