使用 HFD 加快 Hugging Face 模型和数据集的下载

news/2024/9/19 11:19:44 标签: Hugging Face, LLM, AIGC, HFD

Hugging Face 提供了丰富的预训练模型和数据集,而且使用 Hugging Face 提供的 from_pretrained() 方法可以轻松加载它们,但是,模型和数据集文件通常体积庞大,用默认方法下载起来非常花时间。

本文将指导你如何使用 HFDHugging Face Downloader) 来高效地下载 Hugging Face 上的模型和数据集。HFD 是一个轻量级的下载工具,支持多线程下载和镜像加速。

文章目录

    • 准备工作
      • 所需工具安装
        • 1. **安装 Git**
        • 2. **安装 Wget 或 Curl**
        • 3. **安装 Aria2c**
      • 安装 Git LFS
        • Linux
        • macOS
        • Windows
      • 安装 HFD
        • 下载 HFD
        • 执行权限
    • 配置环境变量
      • Linux
      • Windows PowerShell
    • 使用 HFD 下载模型
      • 下载 GPT-2 模型
        • 参数说明
      • 导入模型
    • 使用 HFD 下载数据集
      • 下载 WikiText 数据集
        • 参数说明
  • 参考链接

准备工作

在开始之前,请确保你的系统已经安装了以下工具(如果安装可以跳过下面的安装命令):

  • Git:版本控制系统,用于管理代码和大文件。
  • WgetCurl:用于下载脚本和文件。
  • Aria2c(可选):一个支持多线程下载的下载工具,可以进一步提升下载速度。

所需工具安装

1. 安装 Git

首先,你需要安装 Git 版本控制系统。如果你的系统还没有安装 Git,可以通过以下命令进行安装:

  • Linux (Ubuntu)

    sudo apt-get update
    sudo apt-get install git
    
  • macOS

    brew install git
    
  • Windows

    从 Git for Windows 下载并安装。

2. 安装 Wget 或 Curl

HFD 脚本依赖于 wgetcurl 来下载资源,确保你至少安装了其中之一:

  • Linux (Ubuntu)

    sudo apt-get install wget curl
    
  • macOS

    brew install wget curl
    
  • Windows

    从 Wget for Windows 或 Curl 官方网站 下载并安装。

3. 安装 Aria2c

为了使用多线程下载提升速度,我们推荐安装 aria2c 下载工具:

  • Linux (Ubuntu)

    sudo apt-get install aria2
    
  • macOS

    brew install aria2
    
  • Windows

    从 Aria2 官方网站 下载并安装。

安装 Git LFS

Git LFS 用于处理和管理大文件,确保你能够顺利下载 Hugging Face 上的模型和数据集。

Linux

安装 Git LFS,这里以 Ubuntu 为例:

sudo apt-get update
sudo apt-get install git-lfs

安装完成后,初始化 Git LFS:

git lfs install
macOS

使用 Homebrew 安装 Git LFS:

brew install git-lfs
git lfs install
Windows
  1. 下载并安装 Git for Windows。
  2. 下载 Git LFS 安装程序:Git LFS 官方下载页面。
  3. 运行安装程序并初始化 Git LFS:
git lfs install

HFD_114">安装 HFD

HFD 是一个用于加速 Hugging Face 资源下载的脚本工具。以下是安装和配置步骤。

HFD_118">下载 HFD

使用 wget 下载 HFD 脚本:

wget https://hf-mirror.com/hfd/hfd.sh

如果你使用的是 curl,可以使用以下命令:

curl -O https://hf-mirror.com/hfd/hfd.sh
执行权限

下载完成后,给脚本增加执行权限:

chmod a+x hfd.sh

配置环境变量

为了让 HFD 能够正确地使用镜像加速下载,你需要设置 HF_ENDPOINT 环境变量。根据你使用的操作系统,设置方法有所不同。

Linux

在终端中运行以下命令:

export HF_ENDPOINT=https://hf-mirror.com

为了让环境变量在每次启动终端时自动生效,可以将上述命令添加到 ~/.bashrc~/.zshrc 文件中:

echo 'export HF_ENDPOINT=https://hf-mirror.com' >> ~/.bashrc
source ~/.bashrc

Windows PowerShell

在 PowerShell 中运行以下命令:

$env:HF_ENDPOINT = "https://hf-mirror.com"

为了让环境变量在每次启动 PowerShell 时自动生效,可以将上述命令添加到 PowerShell 配置文件中(通常位于 Documents\PowerShell\Microsoft.PowerShell_profile.ps1):

Add-Content -Path $PROFILE -Value '$env:HF_ENDPOINT = "https://hf-mirror.com"'

HFD__173">使用 HFD 下载模型

HFD 提供了一种简便的方法来下载 Hugging Face 上的预训练模型。以下是下载 gpt2 模型的步骤。

下载 GPT-2 模型

在终端中运行以下命令:

./hfd.sh gpt2 --tool aria2c -x 4
参数说明
  • gpt2:要下载的模型名称,对应替换为你自己想下载的。
  • --tool aria2c:指定使用 aria2c 作为下载工具,以支持多线程下载。
  • -x 4:设置 aria2c 的最大连接数为 4,以加快下载速度,你可以设置得更高。

运行(-x 16):

image-20240918220106023

导入模型

假设下载完之后保存在当前目录的gpt2文件夹下,可以使用以下命令直接导入,注意 AutoModelForCausalLM 仅用于当前模型,你需要根据实际情况进行替换:

from transformers import AutoModelForCausalLM, AutoTokenizer

# 设置模型和分词器的本地路径
model_path = "./gpt2"

# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)

# 测试模型加载是否成功
input_text = "Hello, how are you?"
inputs = tokenizer(input_text, return_tensors="pt")

# 使用模型生成文本
outputs = model.generate(**inputs)

# 解码输出
output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(output_text)

如果下载的是量化模型

如果你使用了 4-bit 或 8-bit 量化技术(如在 HFD 中使用 quantization_config),那么需要额外配置量化参数,可以使用 Hugging Face 的 bitsandbytes 库加载量化后的模型。

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers import BitsAndBytesConfig

model_path = "./gpt2"

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,  # 或 torch.bfloat16
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type='nf4'  # 使用的量化类型
)

# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    quantization_config=quantization_config
)
tokenizer = AutoTokenizer.from_pretrained(model_path)

# 测试量化模型
input_text = "Hello, how are you?"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs)
output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(output_text)

HFD__253">使用 HFD 下载数据集

类似于下载模型,HFD 也支持下载 Hugging Face 上的各种数据集。以下是下载 wikitext 数据集的步骤。

下载 WikiText 数据集

在终端中运行以下命令:

./hfd.sh wikitext --dataset --tool aria2c -x 4
参数说明
  • wikitext:要下载的数据集名称,对应替换为你自己想下载的。
  • --dataset:指定下载数据集。
  • --tool aria2c-x 4:同上,使用 aria2c 进行多线程下载。

参考链接

HF-Mirror


http://www.niftyadmin.cn/n/5665420.html

相关文章

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025

VMware ESXi 7.0U3q macOS Unlocker 集成驱动版更新 OEM BIOS 2.7 支持 Windows Server 2025 VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) ESXi 7.0U3 标准版集成 Intel 网卡、Realtek USB 网卡 和 NVMe 驱动 请访问原文链…

SQL 多表联查

目录 1. 内联接(INNER JOIN) 2. 左外联接(LEFT JOIN) 3. 右外联接(RIGHT JOIN) 4. 全外联接(FULL JOIN) 5. 交叉联接(CROSS JOIN) 6. 自联接&#xff0…

使用arduino玩基于esp8266的nodemcu开发板

一、简介 中秋节到图书馆看书,看到了arduino方面的书籍,里面有提到ESP8266模块。让我想起我抽屉里吃灰很久了的基于esp8266的nodemcu开发板。于是把书借回家研究了一下。这里做个记录。 二、我目前在使用的云服务器推荐 学Linux不搞个云服务器始终感觉…

2024年9月python二级易错题和难题大全(附详细解析)(二)

2024年9月python二级易错题和难题大全(附详细解析)(二) 第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11题第12题第13题第14题第15题第16题第17题第18题第19题第20题第1题 1、以下代码的输出结果是() x = 12 + 3 * ((5 * 8) - 14) // 6 print(x) A、25.0 B、6…

OceanBase 中 schema 的定义与应用

背景 经常在OceanBase 的问答社区 里看到一些关于 “schema 是什么” 的提问。 先纠正一些同学的误解, OceanBase 中的 Schema 并不简单的等同于 Database,本次分享将探讨 OceanBase 中的Schema是什么,及一些大家经常遇到的问题。 具体而…

Leetcode Hot 100刷题记录 -Day17(搜索二维矩阵II)

搜索二维矩阵II 问题描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,…

Python基础(十)——闭包、装饰器、设计模式与多线程编程

十一.高级用法 1.闭包 在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,把这个使用外部函数变量的内部函数称为闭包。 解释: 外部函数的参数因为作用域的原因,只是一个临时变量&…

HTTPS:构建安全通信的基石

HTTPS(Hypertext Transfer Protocol Secure),作为互联网上安全通信的基石,通过在HTTP基础上引入SSL/TLS协议层,实现了数据传输的加密,确保了信息的机密性、完整性和真实性。这一过程涉及多个精细设计的步骤…