使用 HFD 加快 Hugging Face 模型和数据集的下载,解决443报错

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

本文将指导你如何使用 HFD(Hugging Face Downloader) 来高效地下载 Hugging Face 上的模型和数据集。HFD 是一个轻量级的下载工具,支持多线程下载和镜像加速。
如果你遇到了代理相关的 443 报错,可以滑到章末查看。

文章目录

    • 准备工作
      • 所需工具安装
        • 1. **安装 Git**
        • 2. **安装 Wget 或 Curl**
        • 3. **安装 Aria2c**
      • 安装 Git LFS
        • Linux
        • macOS
        • Windows
      • 安装 HFD
        • 下载 HFD
        • 执行权限
    • 配置环境变量
      • Linux
      • Windows PowerShell
    • 使用 HFD 下载模型
      • 下载 GPT-2 模型
        • 参数说明
      • 导入模型
    • 使用 HFD 下载数据集
      • 下载 WikiText 数据集
        • 参数说明
    • 可能存在的问题(443 和 git clone failed)
      • 取消代理
      • 重新设置代理
  • 参考链接

准备工作

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

  • 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

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

下载 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 下载模型

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 BitsAndBytesConfigmodel_path = "./gpt2"quantization_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_compute_dtype=torch.float16,  # 或 torch.bfloat16bnb_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 下载数据集

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

下载 WikiText 数据集

在终端中运行以下命令:

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

可能存在的问题(443 和 git clone failed)

取消代理

443 报错一般是因为之前配置了代理,然后现在过期不可用了。

在命令行查看是否设置代理:

env | grep -i proxy

可能的输出:

http_proxy=http://127.0.0.1:7890
https_proxy=http://127.0.0.1:7890
all_proxy=socks5://127.0.0.1:7891

使用以下命令取消:

unset http_proxy                                 
unset https_proxy
unset all_proxy

取消代理之后仍然可能报对应端口的错误,然后Git clone failed.这有可能是因为你的 Git 之前配置了代理。

查看配置:

git config --global --list

可能的输出:

http.proxy=http://127.0.0.1:7890
https.proxy=http://127.0.0.1:7890

如果存在代理,对应取消:

git config --global --unset http.proxy
git config --global --unset https.proxy

现在应该可以正常下载。

重新设置代理

如果你想重新设置代理,下面也给出对应的命令,假设 HTTP/HTTPS 端口号为7890, SOCKS5为7891。

  • 终端代理:

    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
    export all_proxy=socks5://127.0.0.1:7891
    
  • Git 代理:

    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    

参考链接

HF-Mirror

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149080.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

小新 Pro13 + windows 11 家庭中文版(网络适配器及地址配置)

网络适配器位置及地址配置 网络适配器简介 计算机系统:网络适配器详解,全面剖析 网络适配器位置 不同于win11之前的版本,win11的网络适配器的位置如下: 1、右键 右下角的网络图标-》网络和internet设置-》高级网络设置-》可以…

冒泡排序bubble sort

冒泡排序(bubble sort)通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。 算法流程 def bubble_sort(nums: list[int]):"""冒泡排序"""n len(nums)# 外循环&…

46.哀家要长脑子了!

1.435. 无重叠区间 - 力扣(LeetCode) 方法一:动态规划 实际上本质就是找最长的无重叠子序列,那么我们可以遍历这个区间的集合,只要前一个区间的右端点是小于等于后一个区间的左端点,那么这两个区间就不是重…

如何将Excel表格嵌入Web网页在线预览、编辑并保存到自己服务器上?

猿大师办公助手作为一款专业级的网页编辑Office方案,不仅可以把微软Office、金山WPS和永中Office的Word文档内嵌到浏览器网页中实现在线预览、编辑保存等操作,还可以把微软Office、金山WPS和永中Office的Excel表格实现网页中在线预览、编辑并保存到服务器…

虚拟机:4、配置12.5的cuda和gromacs

前言:本机环境是win11,通过wsl2安装了ubuntu实例并已实现gpu直通,现在需要下载12.5的cuda 一、查看是否有gpu和合适的cuda版本 在ubuntu实例中输入 nvidia-smi输出如下: 说明该实例上存在gpu驱动,且适合的CUDA版本…

硬件测试(五):信号补偿

一、简介 高速信号的趋肤效应以及传输线的介质损耗,使信号在传输过程中衰减很大,导致最后得到的信号失真。为了在接收终端能得到比较好的波形,就需要对受损的信号进行补偿,常用的补偿技术有:预加重、去加重和均衡三种信…

思科安全网络解决方案

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…

告别xx搜索,我用这个AI工具...

点击“终码一生”,关注,置顶公众号 每日技术干货,第一时间送达! 前段时间,逛 GitHub 的时候发现了一个评估报告,对AI搜索引擎进行了详细的准确性测试,覆盖6种主流语言和5类场景。 其中&#xf…

苍穹外卖上半部分总结

苍穹外卖一个很经典的项目 虽然已经烂大街,但项目依旧是很优秀,并且代码十分规范,很值得学习。 前置介绍 niginx反向代理 前端和后端的url请求不一致的原因:前端是请求到nginx服务器,再由nginx服务器转发到后端 ngi…

箭头与数字识别系统源码分享

箭头与数字识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

《CUDA编程》1.GPU硬件与CUDA环境搭建

1 GPU 介绍 GPU(graphics processing unit),意为图形处理器,也被称为显卡(graphics card)。GPU的浮点数运算峰值就比同时期的CPU高一个量级;GPU的内存带宽峰值也比同时期的CPU高一个量级。 CP…

数据结构 - 排序算法

一.直接插入排序 /*** description: 直接插入排序算法* param - a : 要进行排序的数组的指针* return : 无 */ void Seqsort(int *a) {/* i 用于表示无序部分的第一个元素的下标 , j 用于表示有序部分的最后一个元素的下标 &…

如何登录通义灵码,快速开启AI编码之旅?

通义灵码个人版开发者可以使用阿里云账号登录通义灵码 IDE 端插件,本文介绍个人版开发者登录 IDE 端插件的操作指南。 登录通义灵码 步骤 1:准备工作 已成功注册阿里云账号,具体操作可参考:账号注册(PC端)…

15.多线程概述(下篇)

目录 1.进程与线程 2.实现多线程方式一:继承Thread类【应用】 3.实现多线程方式二:实现Runnable接口【应用】 4.实现多线程方式三:实现Callable接口【应用】 5.三种实现方式的对比与套路 6.设置和获取线程名称/线程对象【应用】 7.线程优先级…

【编程底层原理】Java常用读写锁的使用和原理

一、引言 在Java的并发世界中,合理地管理对共享资源的访问是至关重要的。读写锁(ReadWriteLock)正是一种能让多个线程同时读取共享资源,而写入资源时需要独占访问的同步工具。本文将带你了解读写锁的使用方法、原理以及它如何提高…

【重磅】考虑火电机组储热改造的电力系统低碳经济调度

目录 1 主要内容 储热改造原理 约束条件 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《考虑火电机组储热改造的电力系统低碳经济调度》,利用原文献火电机组储热改造方案建立模型,在传统火电机组的基础上加装热能存储系统&#xf…

【每天学个新注解】Day 3 Lombok注解简解(二)—@Log

Log 自动创建并初始化日志记录器 日志系列注解包括:CommonsLog、Flogger、JBossLog、Log、Log4j、Log4j2、Slf4j、XSlf4j、CustomLog,对应于不同的日志框架。每个注解都会在编译时生成一个名为 log 的静态字段,该字段被初始化为对应的日志框…

【小白向】怎么去除视频水印?HitPaw帮你轻松解决

序言 HitPaw是一款优秀的去除视频水印的工具。 特点:不仅仅能够去除图片、视频里的固定水印,还能去除移动水印。 尤其是它的AI去水印功能,效果非常好。 极简使用教程 下载安装 HitPaw需要在电脑上安装软件才能使用。 支持Windows系统和…

基于SpringBoot+Vue+MySQL的旅游推荐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会的快速发展和人民生活水平的显著提高,旅游已成为人们休闲娱乐的重要方式。然而,面对海量的旅游信息和多样化的旅游需求,如何高效地管理和推荐旅游资源成为了一个亟待解决的问题。因此…

JavaSE--IO流总览03:复制照片案例,解决关闭流异常的方法

概述:本篇主要是讲述根据上一篇的知识完成一个小需求:图片的复制,以及关闭流的异常以及解决方法 一.照片的复制: 注意:字节流非常适合做一切文件的复制作 ,任何文件的底层都是字节 字节流做复制 是一字不…