当前位置: 首页 > news >正文

【Hugging Face】管理 huggingface_hub 缓存系统

摘要

这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。

这篇文档还提到了一些关于缓存系统的具体信息,例如缓存目录的结构、文件夹中包含的文件类型以及如何检查和删除缓存。此外,文档还介绍了如何使用Hugging Face CLI工具来扫描和删除部分缓存。

从这篇文档中,你可以得到以下要点:

  • Hugging Face Hub的缓存系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。
  • 缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。
  • 缓存系统使用符号链接来共享相同的文件,以节省磁盘空间。
  • 可以使用Hugging Face CLI工具来扫描和删除部分缓存,以释放磁盘空间。
  • 可以自定义缓存目录,并可以通过环境变量或参数来指定。
  • 缓存系统还支持检查和删除缓存中的文件。
  • 除了Hugging Face Hub的缓存系统之外,下游库还可以使用cached_assets_path()方法来缓存与HF相关的其他文件。
  • Hugging Face Hub的缓存系统使用符号链接来提高效率,但并非所有计算机都支持符号链接。
  • 可以使用huggingface-cli工具的scan-cache命令来扫描缓存并获取报告。
  • 可以使用huggingface-cli工具的delete-cache命令来删除部分缓存。

🚚🚒🚑🚎🚐🚌🛻🚙🛺🚕🚓🚗🚚🚒🚑🚎🚐🚌🛻🚙

了解缓存

Hugging Face Hub 缓存系统旨在成为依赖于 Hub 的库之间共享的中央缓存。在 v0.8.0 中进行了更新,以防止在不同版本之间重新下载相同的文件。

缓存系统设计如下:

<CACHE_DIR> 
├─ <MODELS> 
├─ <DATASETS> 
├─ <SPACES>

< CACHE_DIR > 通常是您用户的主目录。但是,您可以通过所有方法的 cache_dir 参数或指定 HF_HOME 或 HUGGINGFACE_HUB_CACHE 环境变量来自定义它。

模型、数据集和空间共享一个公共根目录。这些存储库中的每个存储库都包含存储库类型、命名空间(如果存在)和存储库名称:

<CACHE_DIR> 
├─ models--julien-c--EsperBERTo-small 
├─ models--lysandrejik--arxiv-nlp 
├─ models--bert-base-cased 
├─ datasets--glue 
├─ datasets--huggingface--DataMeasurementsFiles 
├─ spaces--dalle-mini--dalle-mini

所有文件现在都将从 Hub 下载到这些文件夹中。缓存确保如果文件已经存在且未更新,则不会下载两次;但是,如果已更新并且您要求获取最新文件,则会下载最新文件(同时保留以前的文件以防您再次需要它)。

为了实现这一点,所有文件夹都包含相同的框架:

<CACHE_DIR> 
├─ datasets--glue 
│ ├─ refs 
│ ├─ blobs 
│ ├─ snapshots 
...

每个文件夹都设计为包含以下内容:

Refs

refs 文件夹包含指示给定引用的最新修订的文件。例如,如果我们之前从存储库的主分支中获取了一个文件,则 refs 文件夹将包含一个名为 main 的文件,它本身将包含当前 head 的提交标识符。

如果 main 的最新提交标识符为 aaaaaa,则它将包含 aaaaaa。

如果相同的分支使用新的提交进行更新,该提交的标识符为 bbbbbb,则重新从该引用下载文件将更新 refs/main 文件以包含 bbbbbb。

Blobs

blobs 文件夹包含我们已经下载的实际文件。每个文件的名称都是它们的哈希值。

Snapshots

snapshots 文件夹包含到上述 blobs 的符号链接。它本身由多个文件夹组成:每个已知修订一个文件夹!

在上面的解释中,我们最初从 aaaaaa 修订中获取了一个文件,然后再从 bbbbbb 修订中获取了一个文件。在这种情况下,我们现在在快照文件夹中有两个文件夹:aaaaaa 和 bbbbbb。

在这些文件夹中,有活动符号链接,其名称为我们已下载的文件的名称。例如,如果我们在修订 aaaaaa 中下载了 README.md 文件,则将具有以下路径:

<CACHE_DIR>/<REPO_NAME>/snapshots/aaaaaa/README.md

那个 README.md 文件实际上是一个符号链接,链接到具有文件哈希值的 blob。

通过以这种方式创建框架,我们打开了文件共享机制:如果在修订 bbbbbb 中获取了相同的文件,则它将具有相同的哈希值,文件将不需要重新下载。

.no_exist(高级)

除了 blobs、refs 和 snapshots 文件夹外,您还可能在缓存中找到 .no_exist 文件夹。此文件夹跟踪您尝试下载但在 Hub 上不存在的文件。它的结构与快照文件夹相同,每个已知修订一个子文件夹:

<CACHE_DIR>/<REPO_NAME>/.no_exist/aaaaaa/config_that_does_not_exist.json

与快照文件夹不同,文件是简单的空文件(没有符号链接)。在此示例中,“config_that_does_not_exist.json” 文件在修订“aaaaaa” 上不存在于 Hub 上。由于它仅存储空文件,因此在磁盘使用方面,此文件夹可以忽略不计。

那么现在您可能会想知道,为什么这些信息甚至相关呢?在某些情况下,框架尝试加载模型的可选文件。保存可选文件的不存在使加载模型更快,因为它每个可选文件节省了 1 个 HTTP 调用。例如,在 transformers 中,每个 tokenizer 都可以支持其他文件。您第一次在计算机上加载 tokenizer 时,它将缓存哪些可选文件存在(哪些不存在),以使下一次初始化的加载时间更快。

要测试是否本地缓存了文件(而不进行任何 HTTP 请求),可以使用 try_to_load_from_cache() 助手。它将返回文件路径(如果存在并已缓存)、_CACHED_NO_EXIST 对象(如果已缓存不存在)或 None(如果我们不知道)。

相关文章:

【Hugging Face】管理 huggingface_hub 缓存系统

摘要 这篇文档介绍了Hugging Face Hub的缓存系统。该系统旨在提供一个中央缓存,以便不同版本的文件可以被下载和缓存。缓存系统将文件组织成模型、数据集和空间等不同的目录,每个目录包含特定类型的文件。系统确保如果文件已经下载并更新,除非明确要求,否则不会再次下载。…...

Python学习基础笔记六十六——对象的方法

我们已经学习到的对象类型&#xff1a; 整数类型的对象 字符串类型的对象 列表类型的对象 元组类型的对象 对象通常都有属于自己的方法&#xff08;method&#xff09; 调用对象的方法和调用函数差不多&#xff0c;只要在前面加上所属对象的一个点。 var1 [1, 2, 3,4, 5,…...

建立一个新的高阶数学教授模式,知其然,知其用,知其之所以然,知其所以然

1. 传统常用的模式 概念&#xff0c;性质&#xff0c;定理&#xff0c;定理证明&#xff0c;定理应用&#xff1b; 这个学习模式挺好的&#xff0c;但是定理证明过程往往很冗长&#xff0c;而且不易记忆&#xff0c;也就是说&#xff0c;即使推导了定理&#xff0c;初学者也记…...

AtCoder ABC324G 启发式合并

题意 传送门 AtCoder ABC324G Generate Arrays 题解 逆则操作顺序考虑&#xff0c;可以看作至多 n n n 个联通分量不断合并的过程&#xff0c;此时使用启发式合并&#xff0c;即规模较小的连通分量向规模较大的连通分量合并&#xff0c;以单个元素合并为基本运算&#xff0…...

SpringBootCMS漏洞复现分析

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…...

iOS- flutter flavor 多环境Configurations配置

一、点击PROJECT的Runner&#xff0c;选择Info选项&#xff0c;在Configurations下方的号添加不同环境的配置&#xff0c;如下图&#xff1a; 二、选择TAGETS的Runner项目&#xff0c;选择Build Settings选项&#xff0c;在输入框输入package&#xff0c;为不同环境配置相应的…...

【PyTorchTensorBoard实战】GPU与CPU的计算速度对比(附代码)

0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff0c;虽然参考了他人的宝贵见解&#xff0c;但是内容可能存在不准确的地方。如果发现文中错误&#xff0c;希望批评指正&#xff0c;共同进步。 本文基于PyTorch通过tensor点积所需要的时…...

npm 常用指令总结

1. 初始化包 一个存放了代码的文件夹,如果里面有 package.json 文件,则可以把这个文件夹称之为包。 npm init -y 注意: 由于包名不能有中文,不能有大写,不能和未来要下载的包重名. 所以我们快速初始化包时,我们的文件夹也不能违反前面说的规则.(因为默认会将文件夹的名称,作…...

布朗大学发现GPT-4存在新问题,可通过非常见语言绕过限制

&#x1f989; AI新闻 &#x1f680; 布朗大学发现GPT-4存在新漏洞&#xff0c;可通过非常见语言绕过限制 摘要&#xff1a;布朗大学计算机科学研究人员发现了OpenAI的GPT-4存在新漏洞&#xff0c;利用不太常见的语言如祖鲁语和盖尔语可以绕过各种限制。研究人员测试了GPT-4对…...

ESP32网络编程-TCP客户端数据传输

TCP客户端数据传输 文章目录 TCP客户端数据传输1、IP/TCP简单介绍2、软件准备3、硬件准备4、TCP客户端实现本文将详细介绍在Arduino开发环境中,实现一个ESP32 TCP客户端,从而达到与TCP服务器数据交换的目标。 1、IP/TCP简单介绍 Internet 协议(IP)是 Internet 的地址系统,…...

微信小程序入门级

目录 一.什么是小程序&#xff1f; 二.小程序可以干什么&#xff1f; 三.入门使用 3.1. 注册 3.2. 安装 3.3.创建项目 3.4.项目结构 3.5.应用 好啦今天就到这里了&#xff0c;希望能帮到你哦&#xff01;&#xff01;&#xff01; 一.什么是小程序&#xff1f; 微信小程…...

博客文档续更(二)

十五、博客前台模块-个人信息 1. 接口分析 进入个人中心的时候需要能够查看当前用户信息。请求不需要参数 请求方式 请求地址 请求头 GET /user/userInfo 需要token请求头 响应格式 {"code":200,"data":{"avatar":"头像的网络地址…...

Centos切换yum源

Centos切换yum源 常用命令 #查看内核/操作系统/CPU信息 uname -a #查看yum源 yum list repolist all切换步骤 1.备份yum源文件 cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak2.下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下 …...

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库&#xff0c; python3 -m pip install pymilvus Connect from pymilvus import connections c…...

龙迅LT7911UXC 是一款高性能TYPE-C/DP/EDP转换四端口MIPI/LVDS的芯片,还支持图像处理

龙迅LT7911UXC 1.描述&#xff1a; LT7911UXC是一款用于VR/显示应用的高性能Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为 HDCP中继器的上游端&#xff0c;可以与其他芯片的HDCP TX协同工作&#xff0c;实现中继器的功能。对于DP1.4a 输入&#xff0c;LT7911UXC可以配置为1…...

TOR(Top of Rack)

TOR TOR&#xff08;Top of Rack&#xff09;指的是在每个服务器机柜上部署1&#xff5e;2台交换机&#xff0c;服务器直接接入到本机柜的交换机上&#xff0c;实现服务器与交换机在机柜内的互联。虽然从字面上看&#xff0c;Top of Rack指的是“机柜顶部”&#xff0c;但实际T…...

使用asp.net core web api创建web后台,并连接和使用Sql Server数据库

前言&#xff1a;因为要写一个安卓端app&#xff0c;实现从服务器中获取电影数据&#xff0c;所以需要搭建服务端代码&#xff0c;之前学过C#&#xff0c;所以想用C#实现服务器段代码用于测试&#xff0c;本文使用C#语言&#xff0c;使用asp.net core web api组件搭建服务器端&…...

LaTeX 公式与表格绘制技巧

LaTeX 公式与绘图技巧公式基本可以分为 单一公式单一编号单一公式按行编号单一公式多个子编号单一公式部分子编号分段公式现在给出各自的代码单一公式单一编号 公式1&#xff1a;equationaligned\begin{equation}\begin{aligned}a&bc\\b&a2\\c&b-3\end{aligned}\en…...

Spring Cloud--Nacos+@RefreshScope实现配置的动态更新

原文网址&#xff1a;Spring Cloud--NacosRefreshScope实现配置的动态更新_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringCloud整合Nacos使用RefreshScope实现动态更新配置。 官网 Nacos Spring Cloud 快速开始 动态更新的介绍 动态更新的含义&#xff1a;修改应…...

Elasticsearch安装

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

【JavaSE API 】生成随机数的2种方法:Random类和Math类的Random方法

生成随机数的两种方法 Random类和Math类的random方法都可以用来生成随机数 而Math类的random方法则是基于系统时间的伪随机数生成器&#xff0c;大于等于0.0小于1.0的随机double值范围[0,1)。例如&#xff1a; double num1 Math.random() * 5 4;//范围[4,9) Random类是基于种…...

微软和OpenAI正在开发AI芯片, 并计划下个月发布

今年初&#xff0c;Chat**引起了无数网友关注&#xff0c;一度成为了热门话题。这是由人工智能研究实验室OpenAI开发的一款聊天机器人模型&#xff0c;也称为一种人工智能&#xff08;AI&#xff09;技术驱动的自然语言处理工具。能够通过学习和理解人类的语言来进行对话&#…...

记一次Hbase2.1.x历史数据数据迁移方案

查看待迁移的表 list_namespace_tables vaas_dwm2. 制作待迁移表“DWM_TRIP_PART”的快照 snapshot vaas_dwm:DWM_TRIP_PART,dwm_trip_part_snapshot3. 统计待迁移表数据总数 hbase org.apache.hadoop.hbase.mapreduce.RowCounter vaas_dwm:DWM_TRIP_PART...

luajit简介

LuaJIT是一种高效的Lua解释器&#xff0c;其通过即时编译技术将Lua代码转换为机器代码&#xff0c;从而提供了非常快速的执行速度。在本文中&#xff0c;我们将介绍LuaJIT的原理、使用方法以及在嵌入式Linux系统中的应用示例。 LuaJIT的原理 LuaJIT基于Lua 5.1实现&#xff0…...

1.2 switch实现两个数的四则运算

注意&#xff1a; 1、每一个case后面要有break 2、/运算的时候注意分母不能为0 int a, b;char c;cin>>a>>b>>c;switch (c){case :cout << a << << b << << a b << endl;break;case -:cout << a << - …...

mysql面试题47:MySQL中Innodb的事务实现原理

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Innodb的事务实现原理 InnoDB是MySQL中一种常用的存储引擎,它支持事务和行级锁等特性。以下是InnoDB事务实现的简要原理: 事务定义: 事务是指一…...

Google云平台构建数据ETL任务的最佳实践

在数据处理中&#xff0c;我们经常需要构建ETL的任务&#xff0c;对数据进行加载&#xff0c;转换处理后再写入到数据存储中。Google的云平台提供了多种方案来构建ETL任务&#xff0c;我也研究了一下这些方案&#xff0c;比较方案之间的优缺点&#xff0c;从而找到一个最适合我…...

【更新】囚生CYの备忘录(202331014~)

文章目录 20221014 20221014 本以为下午怡宝的比赛至少是能跑到前三&#xff0c;结果连前五都没混到&#xff0c;赛前都知道路线不可能有5km&#xff0c;因为即便是绕着主校区最外沿跑一圈也才4km出头&#xff0c;我估摸着大概是2500米&#xff0c;结果实际上只有1700米&#x…...

《UnityShader入门精要》学习4

一个最简单的顶点/片元着色器 一个最简单的顶点/片元着色器 Unity Shader的基本结构。它包含了Shader、Properties、SubShader、Fallback等语义块。顶点/片元着色器的结构与之大体类似 Shader "MyShaderName" {Properties {// 属性}SubShader {// 针对显卡A的S…...

kaggle新赛:写作质量预测大赛【数据挖掘】

赛题名称&#xff1a;Linking Writing Processes to Writing Quality 赛题链接&#xff1a;https://www.kaggle.com/competitions/linking-writing-processes-to-writing-quality 赛题背景 写作过程中存在复杂的行为动作和认知活动&#xff0c;不同作者可能采用不同的计划修…...