国内如何高速下载hugginging face模型

news2024/11/24 11:05:01

图片

国内如何高速下载hugginging face模型

背景

如今开源大模型很多,相较于线上的调用接口,本地部署更有吸引力。这就免不了需要去Huggingface上下载模型,但因为国内管制要求,huggingface 并不能直接访问,或者下载速度很慢。这两天折腾出两条曲线方案。

现状

原先可用的镜像方式基本已经不可用。

  1. 对于一些主流的模型可以通过aliendao 进行加速。缺点是模型不多
  2. 如果你有梯子,那么可以直接下载。但几个G,甚至几十个G的模型,光是流量还是肉疼的。
曲线救国

为此采取一种曲线救国的方式(前提是你可以访问外网,主要为了节约流量):

前期准备:申请百度网盘开发者

  1. colab or play-with-dcoker ,话不多说,直接看代码。
  2. 上传百度网盘,然后国内下载。(上传速度很快)图片

共享机制

本着我为人人,人人为我的精神。如果你愿意分享 你的百度网盘地址,可提交 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 shutil

from huggingface_hub import snapshot_download
from bypy import ByPy

def 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大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

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

相关文章

Flowable更改默认数据库H2到Mysql数据库

Flowable更改默认数据库H2到Mysql数据库 1、下载flowable安装包,从官方下载,下载后解压缩 2、将flowable-ui.war包拷贝到tomcat里面的webapps目录,tomcat的安装在此就不熬术了。 3、此时启动tomcat,flowable-ui会使用默认的H2…

SVN 报错Error: Unable to connect to a repository at URL解决方法

1. 报错背景: 使用ssh 用svn拉取仓库代码时,出现如下报错: Can’t create session: Unable to connect to a repository at URL svn://127.0.0.1 …. Can’t connect to host ‘127.0.0.1’: Connection refused at C:/Program Files/Git/mi…

开展“安全生产月”活动向媒体投稿的好方法找到了

作为一名单位的信息宣传员,我的职责是确保每一次重要活动的声音都能准确无误地传达到社会的每一个角落。在这样的使命驱动下,我曾一度陷入了一种传统的投稿模式——依赖电子邮件,将精心准备的稿件一封封地发送给各大媒体。初入此行,我满心以为这便是信息传播的路径,却未料到,这…

在Linux中安装中文编程语言洛书

本次安装使用的VMware中的Ubuntu系统虚拟机,尝试下中文编程。 安装洛书 下载官网:洛书——打造开源高效强大的国产编程语言 官方文档:洛书文档中心 (losu.tech) 点击获取 在终端中安装工具 dpkg和rlwrap: sudo apt install d…

代码随想录-Day35

134. 加油站 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 …

保姆级小白就业人工智能(视频+源码+笔记)

🍅我是小宋, Java学习AI,记录学习之旅。关注我,带你轻松过面试。提升简历亮点(14个demo) 🍅我的java面试合集已有12W 浏览量。🌏号:tutou123com。拉你进专属群。 ⭐⭐你的…

通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践

Qwen2(通义千问2)是阿里云最近推出的开源大型语言模型系列,相比2月推出的Qwen1.5,Qwen2实现了整体性能的代际飞跃,大幅提升了代码、数学、推理、指令遵循、多语言理解等能力。其中,Qwen2系列包含5个尺寸的预…

群晖NAS部署在线PS工具Potopea并实现浏览器远程访问处理图片

文章目录 前言1. 部署Photopea2. 运行Photopea3. 群晖安装Cpolar4. 配置公网地址5. 公网访问测试6. 固定公网地址 前言 本文主要介绍如何在群晖NAS本地部署Potopea在线图片PS编辑工具,并结合cpolar内网穿透实现公网环境远程访问本地部署的Potopea处理图片. Photop…

《平衡小车控制系统》电子设计大赛校赛感悟

我们学校举行了一次电子设计大赛选拔赛,虽然我们在测试的时候全部都可以完成,最后考核的时候因为方案选择问题以及各种设计逻辑等原因没能成功晋级,但我能从这次备赛中学到很多东西,遂分享一下,与广大网友交流经验。&a…

嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍 蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。 蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。 有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声&#x…

答应我,完成单位投稿任务用对的方法别让自己受投稿之苦

在这个信息爆炸的时代,单位的形象塑造与品牌传播已成为不可忽视的关键环节。作为单位的信息宣传员,我深知每一次对外发声的重要性,它不仅是展示我们工作成果的窗口,更是连接公众、塑造品牌形象的桥梁。然而,在传统的投稿方式中,尤其是依赖于邮箱投稿,我经历了太多次的挫败与无奈…

国际荐酒师香港协会受邀参加2024年美国独立日庆祝活动

国际荐酒师(香港)协会受邀参加2024年美国独立日庆祝活动促进世界酒中国菜的全球化发展 2024年6月18日,国际荐酒师(香港)协会大中华区驻广州办事处荣幸地接受了美国驻广州总领事馆 Nicholas Burns大使和Lisa Heller总领…

第十二章:会话控制

会话控制 文章目录 会话控制一、介绍二、cookie2.1 cookie 是什么2.2 cookie 的特点2.3 cookie 的运行流程2.4 浏览器操作 cookie2.5 cookie 的代码操作(1)设置 cookie(2)读取 cookie(3)删除 cookie 三、se…

使用 Web Serial API 在浏览器中实现串口通讯(纯前端)

文章目录 目的相关资料使用说明代码与演示总结 目的 串口是非常常用的一种电脑与设备交互的接口。目前在浏览器上直接使用电脑上的串口设备了,这篇文章将介绍相关内容。 相关资料 Web Serial API 相关内容参考如下: https://developer.mozilla.org/en…

【Java面试】二十、JVM篇(上):JVM结构

文章目录 1、JVM2、程序计数器3、堆4、栈4.1 垃圾回收是否涉及栈内存4.2 栈内存分配越大越好吗4.3 方法内的局部变量是否线程安全吗4.4 栈内存溢出的情况4.5 堆和栈的区别是什么 5、方法区5.1 常量池5.2 运行时常量池 6、直接内存 1、JVM Java源码编译成class字节码后&#xf…

七大黄金原油短线操作技巧与方法

1、研究K线组合 K线组合是几个交易日K线的衔接和联系,它无法掩饰地透露着黄金价格运行趋势的某种征兆。研究K线组合的深刻蕴含,感知其内在动意,把握黄金价格上涨征兆,可以大大提高上涨的概率。其实对许多诸如“强势整理”、“突破…

管道(channel)入门

管道(Channel) 1、管道本质就是一个数据结构-队列 2、数据是先进先出 3、自身线程安全,多协程访问时不需要加锁,channel本身就是线程安全的 4、管道有类型的,一个string的管道,只能存放string类型的数据 管…

vue3第四十节(pinia的用法注意事项解构store)

pinia 主要包括以下五部分,经常用到的是 store、state、getters、actions 以下使用说明,注意事项,仅限于 vue3 setup 语法糖中使用,若使用选项式 API 请直接查看官方文档: 一、前言: pinia 是为了探索 vu…

一文弄懂 Python os.walk(),轻松搞定文件处理和目录遍历

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ Python os 模块的 walk() 方法以自顶向下或自底向上的方式遍历指定的目录树,从而显示目录树中的文件名。对于目录树中的每个目录,os.walk() 方法都会产生一个包含目录路径、当前…

当同时绑定mousedown和mouseup时,不执行mouseup

问题描述: 当我同时给一个标签添加mousedown和mouseup两个鼠标事件,点击span的时候会触发mousedown事件,但是不会执行mouseup事件;但是注释图二中的setCloudControl方法又能触发mouseup。 后来查阅资料,发现是在封装a…