PyTorch Tune 命令行界面¶
本页是使用 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 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 <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 文档。
一些常用标志:
--nproc-per-node |
每个节点的 worker 数量;支持的取值:[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 与您自己的本地配方和配置一起,只需将文件路径而不是名称传递给运行命令即可。您可以混合自定义配方与 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 <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!