告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验
告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验
Huggingface国内开源镜像:https://hf-mirror.com/
里面总结了很多下载的方法,下面进行一一讲解
方法一:网页下载
在模型主页的Files and Version中中可以获取文件的下载链接。无需登录直接点击下载,还可以复制下载链接,用其他下载工具下载。
方法二:huggingface-cli()
huggingface-cli 是 Hugging Face 官方提供的命令行工具,自带完善的下载功能。
- ** 安装依赖**
创建项目的虚拟环境后,激活该环境并执行:
pip install -U huggingface_hub
可以运行huggingface-cli download --h命令来查看download功能的参数,如下图
- 设置环境变量
- 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
- 下载模型
以下载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就下载完成
- 下载数据集
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,可以做到稳定下载不断线。
- 下载 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
- 设置环境变量
- Linux
export HF_ENDPOINT=https://hf-mirror.com
- Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror.com"
- 下载模型
模型网址:THUDM/glm-4-9b-chat,https://hf-mirror.com/THUDM/glm-4-9b-chat/tree/main
./hfd.sh gpt2 --tool aria2c -x 4
- ** 下载数据集**
./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_pretrained、wget、curl如何设置认证 token。
Q2:不推荐 Git clone原因
此外官方还提供了 git clone repo_url 的方式下载,这种方法相当简单,然而却是最不推荐直接用的方法,缺点有二:
- 不支持断点续传,断了重头再来;
- clone 会下载历史版本占用磁盘空间,即使没有历史版本,.git文件夹大小也会存储一份当前版本模型的拷贝以及元信息,导致整个模型文件夹磁盘占用两倍以上,对于有些存在历史版本的模型,下载时间两倍以上,对于网络不够稳,磁盘不够大的用户,严重不推荐!
Q3:其他方法推荐()
可以去其他平台下载:
- ollama
- 魔塔社区
网址:https://www.modelscope.cn/models
参考链接
告别Hugging Face模型下载难题:掌握高效下载策略,畅享无缝开发体验的更多相关文章
- Optimum + ONNX Runtime: 更容易、更快地训练你的 Hugging Face 模型
介绍 基于语言.视觉和语音的 Transformer 模型越来越大,以支持终端用户复杂的多模态用例.增加模型大小直接影响训练这些模型所需的资源,并随着模型大小的增加而扩展它们.Hugging Face ...
- 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载
人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...
- Flutter 下载篇 - 贰 | 当下载器遇上切换网络库
需求背景 继上篇<Flutter 下载篇 - 壹 | flutter_download_manager 源码解析>中详细介绍了 flutter_download_manager 用法和原理 ...
- 【资源】108个大数据文档PDF开放下载-整理后打包下载
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 本博客其他.NET开源项目文章目录:h ...
- [教程]怎么用百度云观看和下载"磁力链接"无需下载直接观看.
1, 打开网址 http://okbt.net/ 输入你想要看的电影名字, 点搜索,鼠标右键点击拷贝磁力链接.或者 电脑装了迅雷的话.可以直接点击.用迅雷下载. 磁力链接都是这种格式的.例: mag ...
- Quartus 11.0 的AS 下载方式和JTAG下载jic文件的方式
FPGA下载的三种方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式: AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EP ...
- 使用SDWebImage下载图片,sharedDownloader方法下载成功,new 方法下载失败
一,经历 1.使用 new 方法创建下载对象时,下载图片总是失败,而且不会执行成功或失败后的回调. 2.参考别人的代码,用的是sharedDownloader来创建下载对象,可以顺利下载图片. 3.看 ...
- 解决jsp下载文件,迅雷下载路径不显示文件名称的问题
如果浏览器安装了迅雷的插件,在jsp页面调用java后台实现文件下载功能时,会自动弹出迅雷下载,迅雷的下载路径会显示.do或者.xhtml之类的,为了解决这个问题,jsp页面修改如下: 写一个< ...
- 下载站中的下载连接其实是php脚本文件控制
什么是php文件,PHP是一种服务器端HTML-嵌入式脚本描述语言. 其最强大和最重要的特征是其数据库集成层,使用它完成一个含有数据库功能的网页是不可置信的简单.在HTML文件中, PHP脚本程序(语 ...
- WinForm客户端限速下载(C#限速下载)
最近由于工作需要,需要开发一个能把服务器上的文件批量下载下来本地保存,关键是要实现限速下载,如果全速下载会影响服务器上的带宽流量.本来我最开始的想法是在服务器端开发一个可以从源头就限速下载的Api端口 ...
随机推荐
- org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题
org.springframework.beans.BeanUtils.copyProperties对象赋值的常见问题 //codepublic static void copyProperties( ...
- (四)Redis 缓存应用、淘汰机制
1.缓存应用 一个系统中不同层面数据访问速度不一样,以计算机为例,CPU.内存和磁盘这三层的访问速度从几十 ns 到 100ns,再到几 ms,性能的差异很大,如果每次 CPU 处理数据时都要到磁盘读 ...
- python selenium使用无头模式执行用例
什么是无头模式? Headless Browser模式是浏览器的无界面状态,即在不打开浏览器界面的情况下使用浏览器. 该模式的好处如下: 1)可以加快web自动化测试的执行时间,对于web自动化测试, ...
- pycharm中运行jupyter notebook
进入anaconda prompt,进入对应的虚拟环境 输入jupyter notebook,找到路径和token 这两个随便复制一个,注意是包括token也要复制到 然后打开pycharm,并建立一 ...
- QT学习:05 元对象系统
--- title: framework-cpp-qt-05-元对象系统 EntryName: framework-cpp-qt-05-mos date: 2020-04-09 17:11:44 ca ...
- Redis查询大key
原文 安装 wget "https://pypi.python.org/packages/68/44/5efe9e98ad83ef5b742ce62a15bea609ed5a0d1caf35 ...
- Ubuntu下的NVIDIA显卡【驱动&CUDA 安装与卸载】
碎碎念:主要是把显卡相关的整合出来,基础知识后面再放上来 显卡安装后可以有效降低电脑开太多界面卡顿hhh现象,不过如果显卡不好的话或者是独显的话 问题也不大,主要是学习 learning 使用 参考资 ...
- 工控必备!NXP i.MX 8M Mini开发板规格书资料分享,高性能低功耗!
1 核心板简介 创龙科技SOM-TLIMX8-B是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高端工业级核心板,A ...
- 数据结构—包(Bag)
数据结构中的包,其实是对现实中的包的一种抽象. 想像一下现实中的包,比如书包,它能做什么?有哪些功能?首先它用来装东西,里面的东西可以随便放,没有规律,没有顺序,当然,可以放多个相同的东西.其次,东西 ...
- git使用教程及常用命令
1.初次本地git连接远程仓库,并提交代码到远程仓库 第一步 码云上创建仓库 第二步 在需要上传的项目处右键-->git bush here 第三步 初始化本地git库 git init 设定 ...