【Hugging Face】如何从hub中下载文件

news2025/1/2 3:08:19

huggingface_hub库提供了从存储在Hub上的仓库中下载文件的功能。您可以独立使用这些函数或将它们集成到您自己的库中,使您的用户更方便地与Hub交互。本指南将向您展示如何:

  • 下载并缓存单个文件。
  • 下载并缓存整个代码库。
  • 将文件下载到本地文件夹。

下载单个文件

【hf_hub_download()】函数是从Hub下载文件的主要函数。它会下载远程文件,在磁盘上以版本感知的方式缓存它,并返回其本地文件路径。

返回的文件路径是指向HF本地缓存的指针。因此,重要的是不要修改文件,以避免缓存损坏。如果您想了解更多有关如何缓存文件的信息,请参阅我们的缓存指南。

从上个版本

使用repo_id、repo_type和filename参数选择要下载的文件。默认情况下,该文件将被视为模型存储库的一部分。 

from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json")

hf_hub_download(repo_id="google/fleurs", filename="fleurs.py", repo_type="dataset")

从特定版本

默认情况下,会下载主分支的最新版本。然而,在某些情况下,您可能想要下载特定版本的文件(例如,从特定分支、PR、标签或提交哈希)。为此,请使用修订参数。

hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="v1.0")

hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="test-branch")

hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="refs/pr/3")

hf_hub_download(repo_id="lysandre/arxiv-nlp", filename="config.json", revision="877b84a8f93f2d619faa2a6e514a32beef88ab0a")

注意:在使用提交哈希时,必须使用完整的哈希值,而不是7个字符的哈希值。

构建下载URL


如果您想构建用于从存储库下载文件的URL,可以使用hf_hub_url()返回URL。请注意,它在hf_hub_download()内部使用。

下载整个代码库。

snapshot_download() 下载给定版本的整个存储库。它在内部使用hf_hub_download(),这意味着所有下载的文件也会缓存在本地磁盘上。下载是并发进行的,以加快进程。
要下载整个存储库,只需传递repo_id和repo_type:

from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp")

snapshot_download(repo_id="google/fleurs", repo_type="dataset")

 snapshot_download() 默认下载最新的修订版本。如果您想要特定的存储库版本,请使用 revision 参数:

from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp", revision="refs/pr/1")

过滤要下载的文件 

【snapshot_download() 】提供了一个简单的下载存储库的方式。然而,你并不总是想下载整个存储库的内容。例如,如果你知道只会使用 .safetensors 权重,你可能想要阻止下载所有的 .bin 文件。你可以使用 allow_patterns 和 ignore_patterns 参数来实现这一点。这些参数接受单个模式或模式列表。模式是标准通配符(globbing patterns),如此处所述。模式匹配基于 fnmatch。例如,你可以使用 allow_patterns 仅下载 JSON 配置文件。

 

from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp", allow_patterns="*.json")

另一方面,ignore_patterns 可以排除某些文件不被下载。以下示例忽略 .msgpack 和 .h5 文件扩展名:

from huggingface_hub import snapshot_download
snapshot_download(repo_id="lysandre/arxiv-nlp", ignore_patterns=["*.msgpack", "*.h5"])

下载文件到本地文件夹。

推荐(也是默认的)从Hub下载文件的方法是使用缓存系统。您可以通过设置【cache_dir】参数(在hf_hub_download()和snapshot_download()中均可)来定义缓存位置。
但是,在某些情况下,您希望下载文件并将它们移动到特定文件夹。这对于让工作流程更接近git命令提供的内容非常有用。您可以使用local_dir和local_dir_use_symlinks参数来实现这一点:
local_dir必须是系统上文件夹的路径。下载的文件将保持与存储库中相同的文件结构。例如,如果filename =“data / train.csv”并且local_dir =“path / to / folder”,则返回的文件路径将为“path / to / folder / data / train.csv”。
local_dir_use_symlinks定义了如何将文件保存在本地文件夹中。默认行为(“auto”)是复制小文件(<5MB),并对大文件使用符号链接。符号链接允许优化带宽和磁盘使用率。但是手动编辑符号链接的文件可能会损坏缓存,因此对于小文件进行复制。可以使用HF_HUB_LOCAL_DIR_AUTO_SYMLINK_THRESHOLD环境变量来配置5MB阈值。
如果设置local_dir_use_symlinks = True,则所有文件都将链接到最佳磁盘空间优化。例如,在下载具有数千个小文件的巨大数据集时非常有用。
最后,如果您根本不想使用符号链接,则可以禁用它们(local_dir_use_symlinks = False)。仍将使用缓存目录来检查文件是否已缓存。如果已经缓存,则从缓存中复制文件(即节省带宽但增加磁盘使用)。如果文件尚未缓存,则会直接下载并移动到本地目录。这意味着如果您需要稍后在其他地方重用它,它将被重新下载。
以下是一张表格,总结了不同的选项,以帮助您选择最适合您使用情况的参数。

 注意:如果您使用的是Windows机器,您需要启用开发人员模式或以管理员身份运行huggingface_hub以启用符号链接。请查看缓存限制部分以了解更多细节。

从CLI下载

你可以使用huggingface-cli下载命令直接从Hub下载文件。内部使用上述描述的hf_hub_download()和snapshot_download()助手,并将返回的路径打印到终端:

huggingface-cli download gpt2 config.json
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.json

默认情况下,本地保存的令牌(使用 huggingface-cli login)将被使用。如果您想显式地进行身份验证,请使用 --token 选项:

 huggingface-cli download gpt2 config.json --token=hf_****
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.json

您可以同时下载多个文件,显示进度条并返回文件所在的快照路径:

huggingface-cli download gpt2 config.json model.safetensors
Fetching 2 files: 100%|████████████████████████████████████████████| 2/2 [00:00<00:00, 23831.27it/s]
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10

 如果您想要静音进度条和潜在的警告,请使用 --quiet 选项。如果您想要将输出传递给脚本中的另一个命令,这将证明非常有用。

 huggingface-cli download gpt2 config.json model.safetensors
/home/wauplin/.cache/huggingface/hub/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10

默认情况下,文件将被下载到由HF_HOME环境变量定义的缓存目录中(如果未指定,则为~/.cache/huggingface/hub)。您可以通过使用--cache-dir选项来覆盖此设置。

huggingface-cli download gpt2 config.json --cache-dir=./cache
./cache/models--gpt2/snapshots/11c5a3d5811f50298f278a704980280950aedb10/config.json

如果您想将文件下载到本地文件夹,而不带缓存目录结构,则可以使用--local-dir。将文件下载到本地文件夹会带来一些限制,这些限制列在此表中。

huggingface-cli download gpt2 config.json --local-dir=./models/gpt2
./models/gpt2/config.json

有更多的参数可以指定不同类型的仓库或版本来下载,并使用glob模式包含/排除要下载的文件:

huggingface-cli download bigcode/the-stack --repo-type=dataset --revision=v1.2 --include="data/python/*" --exclu
de="*.json" --exclude="*.zip"
Fetching 206 files:   100%|████████████████████████████████████████████| 206/206 [02:31<2:31, ?it/s]
/home/wauplin/.cache/huggingface/hub/datasets--bigcode--the-stack/snapshots/9ca8fa6acdbc8ce920a0cb58adcdafc495818ae7

对于所有的参数列表,您可以运行:

huggingface-cli download --help

快速下载

如果你正在使用带宽较高的计算机,你可以使用【hf_transfer】来增加你的下载速度。hf_transfer是一个基于Rust开发的库,用于加速与Hub的文件传输。要启用它,请安装该包(pip install hf_transfer)并将HF_HUB_ENABLE_HF_TRANSFER=1设置为环境变量。

hf_transfer是一款高级用户工具!它已经经过测试并且可以用于生产,但是它缺少用户友好的功能,比如进度条或高级错误处理。更多详情,请查看这个章节。

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

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

相关文章

语义分割,实例分割,全景分割梳理

语义分割&#xff08;semantic segmentation&#xff09; 实例分割&#xff08;instance segmentation&#xff09; 全景分割&#xff08;Panoptic Segmentation&#xff09; 下面基于《Panoptic Segmentation 》这篇论文进行这几个概念的梳理 论文链接&#xff1a;https:/…

基于安卓android微信小程序的垃圾废品回收类软件

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&a…

软件测试的价值

测试人员可以参与到软件的全生命周期中&#xff0c;一切软件质量相关的活动。具体来说主要有&#xff1a; 1、需求评审&#xff0c;帮助产品梳理业务逻辑 测试人员对产品功能有丰富的业务测试经验&#xff0c;有时会比产品还要熟悉平台的整体业务逻辑&#xff0c;所以需求评审…

【PG】Linux系统部署PostgreSQL单机数据库

安装方式 1 安装包方式 &#xff08;Packages and Installers&#xff09; 支持的操作系统包括 liunxMacosWindowsBSDSolaris 2 源码安装 &#xff08;Source code&#xff09; 下载源码包 通过下载地址PostgreSQL: File Browser 可以看到有各个版本的源码目录 选择13.1…

WPF向Avalonia迁移(二、一些可能使用到的库)

可能使用到的一些库 1. UI库 开源项目&#xff1a;https://github.com/irihitech/Semi.Avalonia 如果想引用他的DataGrid样式还需要添加Semi.Avalonia.DataGrid 2. 图表库 LiveChartsCore.SkiaSharpView.Avalonia 3.SVG库 开源项目&#xff1a;https://github.com/wieslaw…

prometheus使用数据源的timestamp而非server的timestamp

关于timestamp指标的解释 prometheus中的指标timestamp有两个&#xff1a; prometheus拉取时刻的timestamp&#xff0c;即服务端的timestamp&#xff1a;time.Now()&#xff1b;exporter的/metrics接口&#xff0c;除了返回metric&#xff0c;value&#xff0c;还返回timesta…

chromium线程模型(1)-普通线程实现(ui和io线程)

通过chromium 官方文档&#xff0c;线程和任务一节我们可以知道 &#xff0c;chromium有两类线程&#xff0c;一类是普通线程&#xff0c;最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现&#xff0c;下一篇文章分析线程池的实现。&#xff…

asp.net电影院选座系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net电影院选座系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言开发 asp.net电影院选座系统1 二、功能介…

简述CRM系统软件的作用

销售部门作为企业重要的营收部门&#xff0c;做好企业管理意义重大。如今市场竞争激烈&#xff0c;人工管理很难兼顾。不少企业借助CRM销售管理系统优化改进工作流程中各个环节存在的问题。下面小Z来简单说说CRM系统是做什么的&#xff1f; 一、客户档案管理 通过CRM销售管理…

使用企业订货系统后的效果|软件定制开发|APP小程序搭建

使用企业订货系统后的效果|软件定制开发|APP小程序搭建 企业订货系统是一种高效的采购管理系统&#xff0c;它可以帮助企业更好地管理采购流程&#xff0c;降低采购成本&#xff0c;提高采购效率。 可以帮助企业提高销售效率和降低成本的软件工具。使用该系统后&#xff0c;企业…

押注“AI写小说”!陈天桥加持,宜搜科技二闯港股IPO

大数据产业创新服务媒体 ——聚焦数据 改变商业 9月29日&#xff0c;IPO征程一波三折的宜搜科技又一次递交招股书&#xff0c;向港交所上市发起冲击。 2014年&#xff0c;宜搜科技美股上市失败&#xff0c;三年后挂牌新三板。2019年&#xff0c;宜搜科技终止挂牌&#xff0c;冲…

vue:权限绑定菜单(全局引入,在template内用v-if调用)

登录成功后&#xff0c;将返回的权限保存到缓存 sessionStorage&#xff1a;浏览页面期间保存&#xff0c;关闭浏览器后丢掉数据 在utils内index.js内定义isAuth方法 在main.js内引入&#xff0c;并挂载全局 在vue页面内&#xff0c;在template内用v-if调用

WPF向Avalonia迁移(一、一些通用迁移项目)

通用变更 WPF&#xff1a;Visibility 其他参考文档 WPF&#xff1a; <TextBlock Visibility"Visible"/><TextBlock Visibility"Collapsed"/><TextBlock Visibility"Hidden"/>Avalonia &#xff1a; <TextBlock IsVisib…

京东快递超时件查询:教你如何操作

近年来&#xff0c;随着电商的快速发展&#xff0c;物流行业也迎来了蓬勃的发展。然而&#xff0c;由于物流订单数量庞大&#xff0c;物流公司在处理这些订单时往往会遇到一些瓶颈&#xff0c;例如超时订单的筛选。为了提高物流效率&#xff0c;许多物流公司采用了智能筛选超时…

IDEA的使用(一) (IntelliJ IDEA 2022.1.3版本)

目录 1. IDEA项目结构 2. 模块的导入操作 2.1 正规操作 2.2 取巧操作 2.3 出现乱码 2.4 模块改名 3. 代码模板的使用 后缀补全&#xff08;Postfix Completion&#xff09;、实时模板&#xff08;Live Templates&#xff09;菜单里面什么介绍都有&#xff0c;可以自学&a…

华为数通方向HCIP-DataCom H12-831题库(单选题:221-240)

第221题 以下哪些项能被正则表达式^30.成功匹配? A、200 100 300 B、100 200 300 C、300 200 100 D、300 100 200 答案:CD 解析: 30.其中的“点”表示的是任何的一个数字,表示的是as-path的开头;所以以300开头的都是满足题目需求的。 第222题 以下哪些项的Community属性能…

MongoDB增删改查常用操作以及podman下载MongoDB命令

Podman下载mongodb命令 podman run -d --name mongodb2 -p 27016:27017 mongo Navicat创建连接 新建数据库 创建集合 use test db.createCollection("coll1") MongoDB查询命令 ## 条件查询 db.getCollection("coll1").find({Date: "20230924&quo…

OnPrem.LLM:一个轻量级 Python 库,用于使用私有数据运行本地大型语言模型

一、介绍 OnPrem.LLM OnPrem.LLM 是一个简单的 Python 库&#xff0c;用于使用非公开数据运行本地大型语言模型。它默认使用的 7B 参数模型&#xff0c;你也可以通过提供 use_largerTrue 使用默认的 13B 模型。你还可以提供不同模型的 URL。OnPrem.LLM 主要受到 privateGPT 项…

【SpringCloud】微服务技术栈入门5 - ElasticSearch

ElasticSearch 倒排索引 倒排索引建立&#xff1a;对文章标题进行分词&#xff0c;将每个词存入 term&#xff0c;这些词也对应一个 id 也就是文档 倒排索引检索&#xff1a;假设我们搜索华为手机 分词&#xff1a;“华为”“手机”从数据库中找到对应的两个 key&#xff0c;…

8年经验之谈 —— Web ui自动化测试框架总结!

实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时补充。 首先&#xff0c;自动化测试不是手动测试的替代品&#xff0c;是比较好的补充&#xff0c;而且不是占大比重的补充。 70%的测试工作集中在底层接口测试和单元测试&#xff0…