国内如何高速下载hugginging face模型
背景
如今开源大模型很多,相较于线上的调用接口,本地部署更有吸引力。这就免不了需要去Huggingface上下载模型,但因为国内管制要求,huggingface 并不能直接访问,或者下载速度很慢。这两天折腾出两条曲线方案。
现状
原先可用的镜像方式基本已经不可用。
- 对于一些主流的模型可以通过aliendao 进行加速。缺点是模型不多
- 如果你有梯子,那么可以直接下载。但几个G,甚至几十个G的模型,光是流量还是肉疼的。
曲线救国
为此采取一种曲线救国的方式(前提是你可以访问外网,主要为了节约流量):
前期准备:申请百度网盘开发者
- colab or play-with-dcoker ,话不多说,直接看代码。
- 上传百度网盘,然后国内下载。(上传速度很快)
共享机制
本着我为人人,人人为我的精神。如果你愿意分享 你的百度网盘地址,可提交 issue 在这个页面共享模型
https://github.com/kevin-meng/HuggingfaceDownloadShare/issues/1
方法一 (colab-推荐)
[colab 页面]
https://colab.research.google.com/drive/1S7E3mMsVhJlhuvtMFUalOSXl0e0YOSbt?usp=sharing
完整程序有点长放在文末。(其中解决 colab 的 符号链接(symlink)/软连接文件处理函数还是蛮有用的)
https://github.com/kevin-meng/HuggingfaceDownloadShare
方法二 (play-with-dcoker)
方法二相对麻烦些,需要在 play-with-dcoker 启动一个节点,并构建镜像,之后会得到一个 gradio 的页面。然后可以在对应窗口中填入相应的 模型id 即可。
colab 完整程序
import os
import shutilfrom huggingface_hub import snapshot_download
from bypy import ByPydef copy_data(source_directory,target_directory):# 遍历源目录中的所有文件和目录 for entry in os.listdir(source_directory): entry_path = os.path.join(source_directory, entry) # 检查是否为符号链接 if os.path.islink(entry_path): # 获取符号链接的目标路径 target_path = os.readlink(entry_path) # 构建目标路径的绝对路径 target_absolute_path = os.path.join(source_directory, target_path) # 获取目标路径的文件名或目录名 target_basename = os.path.basename(target_absolute_path) # 构建目标文件或目录的路径 target_entry_path = os.path.join(target_directory, entry) # 复制目标文件或目录到目标目录 if os.path.isdir(target_absolute_path): shutil.copytree(target_absolute_path, target_entry_path) else: shutil.copy2(target_absolute_path, target_entry_path) else: # 如果不是符号链接,直接复制到目标目录 shutil.copy2(entry_path, os.path.join(target_directory, entry)) def download(repo_id): source_directory = snapshot_download(repo_id=repo_id,cache_dir="/app/data/",force_download =True) print("文件路径:",source_directory) path_name = repo_id.replace("/","---") target_directory = f"{os.getcwd()}/download/{path_name}" # 移动文件 os.system(f"mkdir -p {target_directory}") os.system(f"mkdir -p {os.getcwd()}/tar/{path_name}/") copy_data(source_directory,target_directory) print("复制路径:",target_directory) return target_directory def upload_by_file(source_path):bp = ByPy() dest_path = source_path.split("/")[-1] # 文件名 out = bp.upload( source_path, dest_path ) return out
def upload_by_path(source_path,compress=True):bp = ByPy() # 创建目录 dest_path = source_path.split("/")[-1] # 压缩 if compress: print("分卷压缩....") tar_path =f"{os.getcwd()}/tar/{dest_path}" os.system(f"zip -s 4000M {tar_path}/{dest_path}.zip {source_path}/*") source_path = tar_path print("上传百度云....") bp.mkdir(dest_path) # 同步目录 out = bp.syncup( source_path, dest_path ) return out if __name__ == "__main__": ## 设置 repo_id repo_id = "THUDM/chatglm2-6b-int4" out_path = download(repo_id) # 上传文件夹 # 如果单个文件大小小于 4G 则无需压缩 bp = ByPy() print(bp.list()) upload_by_path(out_path,compress=True) !rm -rf /content/download/* !rm -rf /content/tar/*
如何学习AI大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。