Git——HuggingFace的使用


LFS 环境安装

  • 配置 HuggingFace 环境需要安装 git lfs
  • LFS全称 Large File Storge,即大文件存储,可以帮助我们管理比较大的文件
  • Ubuntu安装
    1
    2
    3
    curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
    sudo apt-get install git-lfs
    git lfs install

拉取 HuggingFace 项目(包含 git 文件)

  • 执行拉取操作

    1
    git clone https://huggingface.co/xxx/xxx
    • 该命令可在 HuggingFace 网站每个项目的首页 ... 选项的 clone repository 中查找到
    • git clone 命令可以将整个项目下载下来,但是下载大的文件时可能会特别慢,最佳实践是:
      • 使用 git clone xxx 下载项目文件,待除大文件外的其他文件下载结束时结束命令
        • 一些未完成的项目会出现在 .git/lfs/incomplete 文件夹下,结束命令后可以删除该文件夹,该文件夹可能会存储较大的未完成文件,浪费存储
      • 使用网页或其他方式下载较大的模型权重文件到指定目录下

使用 huggingface-cli 命令下载数据和模型(基础)

  • 安装

    1
    pip install huggingface-hub
  • 模型下载

    1
    huggingface-cli download Qwen/Qwen2.5-0.5B-Instruct  --local-dir ./Qwen2.5-0.5B-Instruct
  • 数据下载

    1
    huggingface-cli download openai/gsm8k --repo-type=dataset --local-dir ./gsm8k --local-dir-use-symlinks False
    • 重点:增加了 --repo-type=dataset 参数,否则默认是搜索模型
  • --local-dir-use-symlinks 的特别说明:

    • --local-dir-use-symlinks 设置为 True(默认值)时,工具会优先创建符号链接指向缓存目录中的文件,而不是直接复制文件到 --local-dir 指定的目录。这样可以节省磁盘空间,但依赖于系统对符号链接的支持
    • --local-dir-use-symlinks 设置为 False 时,工具会直接将文件复制(而非创建符号链接)到 --local-dir 指定的目录。这会占用更多磁盘空间,但保证了文件在目标目录中是真实存在的实体文件,不依赖符号链接机制,兼容性更好(尤其在 Windows 系统或某些不支持符号链接的环境中)
    • 实际上,ubuntu 下,亲测这个参数也可以不加,加不加没发现不同

使用 hf 命令下载数据和模型(大模型推荐,并行化)

  • 安装

    1
    pip install -U "huggingface_hub[cli]"
  • 用法与 huggingface-cli 几乎完全相同,但速度更快

  • 模型下载:

    1
    hf download Qwen/Qwen2.5-0.5B-Instruct  --local-dir ./Qwen2.5-0.5B-Instruct
  • 数据下载:

    1
    hf download openai/gsm8k --local-dir ./gsm8k --repo-type=dataset --local-dir-use-symlinks False

其他需要注意的点

  • 如果直接使用 transformers 包下载 Bert 等预训练模型时,默认安装在 ~/.cache/huggingface/hub 文件夹下

附录:使用 modelscope 下载模型(国内推荐)

  • 安装
    ‵‵‵bash
    pip install modelscope

    1
    2
    3
    * 模型下载命令
    ```bash
    modelscope download --model Qwen/Qwen2.5-0.5B-Instruct --local_dir ./Qwen2.5-0.5B-Instruct
    • 注意:这里不能使用 --local-dir,必须是 --local_dir