告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验

Huggingface国内开源镜像:https://hf-mirror.com/

里面总结了很多下载的方法,下面进行一一讲解

方法一:网页下载

在模型主页的Files and Version中中可以获取文件的下载链接。无需登录直接点击下载,还可以复制下载链接,用其他下载工具下载。

方法二:huggingface-cli()

huggingface-cli 是 Hugging Face 官方提供的命令行工具,自带完善的下载功能。

  1. ** 安装依赖**

创建项目的虚拟环境后,激活该环境并执行:

pip install -U huggingface_hub

可以运行huggingface-cli download --h命令来查看download功能的参数,如下图

  1. 设置环境变量
  • Linux
export HF_ENDPOINT=https://hf-mirror.com

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

  • python
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

建议将上面这一行写入 ~/.bashrc

vim ~/.bashrc
export HF_ENDPOINT=https://hf-mirror.com
source ~/.bashrc
  1. 下载模型

以下载Qwen/Qwen2-7B-Instruct模型为例,模型地址:https://huggingface.co/Qwen/Qwen2-7B-Instruct,运行以下命令

可以添加 --local-dir-use-symlinks False 参数禁用文件软链接,这样下载路径下所见即所得

#以下命令都可
huggingface-cli download --resume-download --local-dir-use-symlinks False Qwen/Qwen2-7B-Instruct --local-dir /www/algorithm/agent/Qwen2-7B-Instruct huggingface-cli download --resume-download Qwen/Qwen2-7B-Instruct --local-dir /www/algorithm/agent/Qwen2-7B-Instruct --local-dir-use-symlinks False --token hf_***** #huggingface-cli download --resume-download gpt2 --local-dir gpt2

huggingface-cli download --resume-download --local-dir-use-symlinks False THUDM/glm-4-9b-chat --local-dir /www/algorithm/agent/glm-4-9b-chat

下载的挺快的7B大模型大概7-8min就下载完成

  1. 下载数据集
huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir wikitext

方法三:专用多线程下载器 hfd

常规工具如浏览器默认采用单线程下载,由于国内网络运营商线路质量、QoS等因素有时候会很慢,多线程加速是一种有效、显著提高下载速度的方法。

经典多线程工具推荐两个:IDM、Aria2。 IDM 适用于 Windows、aria2 适用于 Linux。因此获取URL后,可以利用这些多线程工具来下载。以我的一次实测为例,单线程700KB/s,IDM 8线程 6MB/s。千兆宽带下,利用IDM能跑到80MB/s+。

hfd 是基于 Git 和 aria2 实现的专用于huggingface 下载的命令行脚本: hfd.sh(Gitst链接)。hfd 相比 huggingface-cli ,鲁棒性更好,很少会有奇奇怪怪的报错,此外多线程控制力度也更细,可以设置线程数量。

  • 具体步骤:

    • Step1:Git clone 项目仓库中lfs文件之外的所有文件,并自动获取 lfs 文件的 url;

    • Step2:利用 aria2 多线程下载文件。

hfd 是本站开发的 huggingface 专用下载工具,基于成熟工具 git+aria2,可以做到稳定下载不断线。

  1. 下载 hfd
wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh find . -name hfd.sh #查看文件位置 依赖安装: sudo apt-get install aria2
  • 下载Git LFS

    下载Git LFS的最新版本。可以在Git LFS的官方网站上找到最新版本的下载链接。在Ubuntu系统上,可以使用以下命令下载Git LFS:
apt-get install git-lfs
  1. 设置环境变量
  • Linux
export HF_ENDPOINT=https://hf-mirror.com

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

  1. 下载模型

模型网址:THUDM/glm-4-9b-chat,https://hf-mirror.com/THUDM/glm-4-9b-chat/tree/main

./hfd.sh gpt2 --tool aria2c -x 4

  1. ** 下载数据集**
./hfd.sh wikitext --dataset --tool aria2c -x 4

如果没有安装 aria2,则可以默认用 wget:

  • 完整命令格式:
$ ./hfd.sh -h
Usage:
hfd <model_id> [--include include_pattern] [--exclude exclude_pattern] [--hf_username username] [--hf_token token] [--tool wget|aria2c] [-x threads] [--dataset] Description:
使用提供的模型ID从Hugging Face下载模型或数据集。 Parameters:
model_id Hugging Face模型ID,格式为'repo/model_name'。
--include (可选)标志,用于指定要包括在下载中的文件的字符串模式。
--exclude (可选)标志,用于指定要从下载中排除的文件的字符串模式。
exclude_pattern 匹配文件名以排除的模式。
--hf_username (可选)Hugging Face用户名,用于身份验证。
--hf_token (可选)Hugging Face令牌,用于身份验证。
--tool (可选)使用的下载工具。可以是wget(默认)或aria2c。
-x (可选)aria2c的下载线程数。
--dataset (可选)标志,表示下载数据集。
示例:
hfd bigscience/bloom-560m --exclude safetensors
hfd meta-llama/Llama-2-7b --hf_username myuser --hf_token mytoken --tool aria2c -x 8
hfd lavita/medical-qa-shared-task-v1-toy --dataset

方法四:使用环境变量(非侵入式)

非侵入式,能解决大部分情况。huggingface 工具链会获取HF_ENDPOINT环境变量来确定下载文件所用的网址,所以可以使用通过设置变量来解决。

HF_ENDPOINT=https://hf-mirror.com python your_script.py

不过有些数据集有内置的下载脚本,那就需要手动改一下脚本内的地址来实现了。

常见问题:

Q1: 有些项目需要登录,如何下载?

A:部分 Gated Repo 需登录申请许可。为保障账号安全,本站不支持登录,需先前往 Hugging Face 官网登录、申请许可,在官网这里获取 Access Token 后回镜像站用命令行下载。

部分工具下载 Gated Repo 的方法:

huggingface-cli: 添加--token参数

huggingface-cli download --token hf_*** --resume-download meta-llama/Llama-2-7b-hf --local-dir Llama-2-7b-hf

hfd: 添加--hf_username``--hf_token参数

hfd meta-llama/Llama-2-7b --hf_username YOUR_HF_USERNAME --hf_token hf_***

其余如from_pretrainedwgetcurl如何设置认证 token。

Q2:不推荐 Git clone原因

此外官方还提供了 git clone repo_url 的方式下载,这种方法相当简单,然而却是最不推荐直接用的方法,缺点有二:

  1. 不支持断点续传,断了重头再来;
  2. clone 会下载历史版本占用磁盘空间,即使没有历史版本,.git文件夹大小也会存储一份当前版本模型的拷贝以及元信息,导致整个模型文件夹磁盘占用两倍以上,对于有些存在历史版本的模型,下载时间两倍以上,对于网络不够稳,磁盘不够大的用户,严重不推荐!

Q3:其他方法推荐()

可以去其他平台下载:

  • ollama

网址:https://ollama.com/library

  • 魔塔社区

网址:https://www.modelscope.cn/models

告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验的更多相关文章

  1. Optimum + ONNX Runtime: 更容易、更快地训练你的 Hugging Face 模型

    介绍 基于语言.视觉和语音的 Transformer 模型越来越大,以支持终端用户复杂的多模态用例.增加模型大小直接影响训练这些模型所需的资源,并随着模型大小的增加而扩展它们.Hugging Face ...

  2. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  3. Flutter 下载篇 - 贰 | 当下载器遇上切换网络库

    需求背景 继上篇<Flutter 下载篇 - 壹 | flutter_download_manager 源码解析>中详细介绍了 flutter_download_manager 用法和原理 ...

  4. 【资源】108个大数据文档PDF开放下载-整理后打包下载

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html        本博客其他.NET开源项目文章目录:h ...

  5. [教程]怎么用百度云观看和下载"磁力链接"无需下载直接观看.

    1, 打开网址 http://okbt.net/  输入你想要看的电影名字, 点搜索,鼠标右键点击拷贝磁力链接.或者 电脑装了迅雷的话.可以直接点击.用迅雷下载. 磁力链接都是这种格式的.例: mag ...

  6. Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式

    FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...

  7. 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败

    一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...

  8. 解决jsp下载文件,迅雷下载路径不显示文件名称的问题

    如果浏览器安装了迅雷的插件,在jsp页面调用java后台实现文件下载功能时,会自动弹出迅雷下载,迅雷的下载路径会显示.do或者.xhtml之类的,为了解决这个问题,jsp页面修改如下: 写一个< ...

  9. 下载站中的下载连接其实是php脚本文件控制

    什么是php文件,PHP是一种服务器端HTML-嵌入式脚本描述语言. 其最强大和最重要的特征是其数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单.在HTML文件中, PHP脚本程序(语 ...

  10. WinForm客户端限速下载(C#限速下载)

    最近由于工作需要,需要开发一个能把服务器上的文件批量下载下来本地保存,关键是要实现限速下载,如果全速下载会影响服务器上的带宽流量.本来我最开始的想法是在服务器端开发一个可以从源头就限速下载的Api端口 ...

随机推荐

  1. STP生成树协议详解

    看了网上关于STP生成树的解释感觉不是很懂,随即自己研究了一番 如有错误,欢迎指正,欢迎留言 ----------------------------------------------------- ...

  2. arm linux 移植 e2fsprogs

    背景 之前在zynq平台下处理系统分区,用到了SPI-FLASH以及EMMC. 根据ZYNQ平台的特性以及产品升级需要,规划了 SPI-FLASH放置BootLoader EMMC中分为2个区,一个F ...

  3. 一次STM32进入HardFault_Handler 的解决情况

    STM32进入HardFault_Handler调试 --- title: STM32进入HardFault_Handler调试 date: 2020-06-18 10:26:48 categorie ...

  4. 构建高可用性、高性能和可扩展的Zabbix Server架构

    简介 本教程讲解了一下如何设计构建一个高性能.高可靠.高扩展的Zabbix 监控集群. 架构图 架构图PDF下载: https://songxwn.com/file/Zabbix_HA.pdf Pig ...

  5. Excel插件之连接数据数据库秒数处理,办公轻松化

    接上文,对excel连接数据库需求的进一步优化: Excel 更改数据同步更新到Mysql数据库 1.通过mysql for excel 插件的思路,了解到一个新的插件 sqlcel,通过这个插件ex ...

  6. Sql Server 创建用户并限制权限

    创建登录名 使用sa或者Windows身份验证登录,[安全性]-[登录名],右键[新建登录名] 设置登录名属性 设置数据库权限 db owner --拥有数据库全部权限,包括删除数据库权限 db ac ...

  7. Java获取客户端请求信息

    客户端工具类 /** * 客户端工具类 * * @author hviger */ public class ServletUtils { /** * 获取String参数 */ public sta ...

  8. Java权限认证框架比较

    认证.授权.鉴权和权限控制 定义 英文 实现方式 认证 确认声明者的身份 identification 根据声明者独特的识别信息 授权 获取用户的委派权限 authorization 颁发一个授信媒介 ...

  9. MySql常用日期时间查询

    -- 某一天所在周的第一天: -- 我们知道国外的星期的第一天是从星期天开始的,所以DAYOFWEEK('2017-3-10')函数的第一天是星期天: SELECT CASE WHEN DAYNAME ...

  10. Kolla-ansible部署openStack

    目录 Kolla-ansible部署openStack 1. 简介 2. 环境准备 3. 部署 3.1 基础环境配置 3.1.1 配置主机名,所有节点操作,这里以openstack01为例 3.1.2 ...