AI软件下载
有趣网站推荐及实用软件下载

HuggingFace模型压缩打包时符号链接引起的文件夹过大问题解决方法

windows电脑上python应用从huggingface上下载模型,默认会在保存位置生成类似目录:

models--Systran--faster-whisper-medium #模型名
   --blobs
      --242aa06a480a7b5509375c645097e87af5136774 #乱码文件名真实大小无格式文件 1GB
      --...
   --refs
   --snapshots
      --08e178d48790749d25932bbc082711ddcfdfbc4f #哈希值
         --config.json #正常文件名0K快捷方式
         --...

假设原来文件夹总共大小1GB,如果把模型文件夹直接压缩打包发给别人,别人解压后可能就会变成2GB。

原本只有blobs文件夹内的文件有实际大小,snapshots文件夹下的文件只是0K 的快捷方式不占用空间。但是压缩打包后这些快捷方式被实体化了,成为了有实际大小的文件。这样就会导致模型文件夹大小翻倍。

【删除blobs文件夹内文件,保留snapshots内有实际大小的文件】

解决方法:

打包时只压缩有实际大小的文件即可。

创建checkpoint文件夹,接着创建faster-whisper-medium模型名文件夹,将snapshots>08e178d48790749d25932bbc082711ddcfdfbc4f文件夹下的文件复制到faster-whisper-medium文件夹内,这时这些原本0KB的快捷方式都变成了有实际大小的文件。这时再把模型文件夹压缩打包的话就不会出现解压大小翻倍的问题了。

然后修改代码。

原本python内代码是使用模型ID来引用文件的,我们把它改成本地电脑内模型文件的相对路径即可。

如原来加载模型代码如下:

pipeline = Trellis2ImageTo3DPipeline.from_pretrained(
"microsoft/TRELLIS.2-4B",
local_files_only=True,#从本地缓存加载,离线使用时开启
)

改为:

pipeline = Trellis2ImageTo3DPipeline.from_pretrained(
"./hf/checkpoint/TRELLIS.2-4B",
local_files_only=True,#从本地缓存加载,离线使用时开启
)

有的模型是在json内配置的,也一并修改即可,如:

"image_cond_model": {
            "name": "DinoV3FeatureExtractor",
            "args": {
                "model_name": "facebook/dinov3-vitl16-pretrain-lvd1689m"
            }
        },

改为:

"image_cond_model": {
            "name": "DinoV3FeatureExtractor",
            "args": {
                "model_name": "./hf/checkpoint/dinov3-vitl16-pretrain-lvd1689m"
            }
        },

但是有时候需要注意代码里是使用的某个模型ID,还是某个模型内的仅仅几个文件


还一种情况,如果需要软件运行时自动从huggingface下载的模型文件就取消使用软连接的方式,

可以使用snapshot_download下载模型文件,然后在应用中指定模型的本地文件路径,如下面示例代码:

import os
from huggingface_hub import snapshot_download
from faster_whisper import WhisperModel, BatchedInferencePipeline

model_name = "Systran/faster-whisper-tiny" #模型ID
# 设置真实物理路径
save_path = "./models/faster-whisper-tiny"

# 1. 手动执行下载(仅在本地文件夹不存在时,或者需要检查更新时执行)
if not os.path.exists(save_path):
    snapshot_download(
        repo_id=model_name,
        local_dir=save_path,
        local_dir_use_symlinks=False, # 关键:禁用软链接
        ignore_patterns=["*.msgpack", "*.h5", "*.ot"] # 可选:忽略不需要的权重格式,节省空间
    )

# 2. 加载模型时,直接指向这个本地物理路径
model = WhisperModel(save_path, device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)

Python应用内使用模型ID的话应用启动时会有联网检查这一步,如果使用本地电脑上的缓存文件的话就不会引起联网检查了。当然你也可以手动设置为离线。


一种简单有效的方法,设置环境变量

os.environ["HF_HUB_DISABLE_SYMLINKS"] = "1"

简单方便


AI软件用不了?2元爽玩4090: 立即体验>>

热门大语言模型API免费体验: 立即获取>>

软件催更及1对1人工答疑支持: https://nuowa.net/1806
赞(0) 打赏
软件无法使用?点击查看常见问题说明>>

最近更新

LTX2.3+comfyui音频驱动视频生成工作流

这是一个基于 ComfyUI 的 LTX 2.3 音视频同步生成工作流,核心功能是上传一段音频 + 参考图片(可多张图),自动生成与音频内容对应的视频,适合制作人物说话、唱歌等口型同步视频。工作流使用8位量化版ltx2.3模型,显存需求降低...

windows电脑C盘垃圾查找清理软件

电脑用了好几年了,尽管我安装软件从来不主动装到C盘,偶尔也会清理垃圾,但是用的久了,容量也是在慢慢减少。我C盘303G,现在就剩了24G了,已经会影响到系统性能和虚拟内存调度了,已经不能不管了。C盘不装软件的话大多都是缓存,文件太多了,有时...

Mineru PDF转markdown软件局域网版

对于有的电脑配置比较低或是win7系统等电脑无法使用Mineru情况,可以使用局域网内可运行软件的电脑运行Mineru,然后其它电脑或手机等终端输入IP地址,打开运行软件的IP地址来使用Mineru。 具体用法: 下载局域网版压缩包到本地电...

觉得文章对你有帮助就打赏一下作者

非常感谢你的打赏,我将有更多的动力继续提供优质内容,让我们一起创建更加美好的世界!

支付宝扫一扫

微信扫一扫