快捷方式

torchtune CLI

此页面是 torchtune CLI 的文档 - torchtune CLI 是一种便捷的方式,用于下载模型、查找和复制相关食谱/配置,以及运行食谱。安装 torchtune 时会自动提供它。

入门

--help 选项将显示通过 torchtune CLI 可用的所有命令,并附带简短描述。

$ tune --help
usage: tune [-h] {download,ls,cp,run,validate,cat} ...

Welcome to the torchtune CLI!

options:
-h, --help            show this help message and exit

subcommands:
  {download,ls,cp,run,validate,cat}
    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 或 Kaggle 模型中心下载任何模型。

--output-dir

保存模型的目录。注意:当 –source 设置为 kaggle 时,尚不支持此选项。

--output-dir-use-symlinks

output-dir 一起使用。如果设置为“auto”,将使用缓存目录,并且文件将根据其大小被复制或符号链接到本地目录。如果设置为 True,将创建一个符号链接,无论文件大小如何。如果设置为 False,文件将从缓存中复制(如果已存在)或从中心下载而不进行缓存。

--hf-token

Hugging Face API 令牌。Llama 等门控模型需要。

--ignore-patterns

如果提供,与任何模式匹配的文件都不会被下载。默认为忽略 safetensors 文件,以避免下载重复的权重。

--source {huggingface,kaggle}

如果提供,将从指定来源中心(Hugging Face 或 Kaggle)的提供路径 下载模型权重。

--kaggle-username

用于身份验证的 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 访问令牌。

您可以在此处找到访问令牌。

$ 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 食谱

tune run lora_finetune_single_device --config llama3/8B_lora_single_device

指定分布式 (torchrun) 参数

tune run 支持通过直接将食谱之前的参数传递给 torchrun 来启动分布式运行。这遵循 torchrun 的模式,即在脚本(食谱)之前指定分布式和主机标志。有关分布式设置可用标志的完整列表,请参阅 torchrun 文档

一些常用标志

--nproc-per-node

每个节点的 worker 数量;支持的值:[auto, cpu, gpu, int]。

--nnodes

节点数量,或以 : 形式表示的节点范围。

--max-restarts

在失败之前最大 worker 组重启次数。

--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 <recipe> --config <config>

运行自定义(本地)食谱和配置

要将 tune run 与您自己的本地食谱和配置一起使用,只需在 run 命令中传递文件路径而不是名称。您可以混合使用自定义食谱和 torchtune 配置,反之亦然,或者同时使用自定义配置和食谱。

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!

检查配置

tune cat <config> 命令将配置漂亮地打印出来,方便您自信地使用 tune run。此命令对于在运行食谱之前检查配置文件的结构和内容非常有用,确保所有参数都正确设置。

您还可以使用 --sort 选项以排序顺序打印配置,这有助于快速定位特定键。

--sort

以排序顺序打印配置。

工作流示例

  1. 列出所有可用配置

    使用 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
    ...
    
  2. 检查配置内容

    使用 tune cat 命令漂亮地打印特定配置的内容。这有助于您理解配置的结构和参数。

    $ tune cat llama2/7B_full
    output_dir: /tmp/torchtune/llama2_7B/full
    tokenizer:
        _component_: torchtune.models.llama2.llama2_tokenizer
        path: /tmp/Llama-2-7b-hf/tokenizer.model
        max_seq_len: null
    ...
    

    您还可以按排序顺序打印配置

    $ tune cat llama2/7B_full --sort
    
  3. 使用参数覆盖运行食谱

    检查配置后,您可以使用 tune run 命令使用该配置运行食谱。您还可以直接从命令行覆盖特定参数。例如,要覆盖 output_dir 参数

    $ tune run full_finetune_distributed --config llama2/7B_full output_dir=./
    

    在此处了解更多关于配置覆盖的信息。

注意

您可以通过 tune ls 命令找到所有可 cat 的配置。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源