快速下载Huggingface的大语言模型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、Huggingface是什么?
  • 二、基于官方huggingface-cli下载(基础,断线风险)
    • 1.安装hf下载环境
    • 2.配置环境变量
    • 3.注册hf账号
    • 4.激活hf账号
    • 5.绑定gemma认证
    • 6.获取下载token
    • 7.开始下载
  • 三、基于hfd.sh下载(建议,不易断线)
    • 1.下载工具
    • 2.赋予权限
    • 3.设置环境变量
    • 4.开始下载
      • 1.Linux系统
      • 2.Windows系统
  • 总结


前言

最近在研究大语言模型,找到了一个不用科学上网就能下载Huggingface的模型的方法。当然,科学上网也支持。


一、Huggingface是什么?

研究大模型的人都知道Huggingface是什么,是一个开源的LLM收录网站,在这里你不仅能下载到各种开源的大模型,还能下载到各种开源的数据集训练自己的LLM。

为了方便书写以下简称Huggingface为hf

二、基于官方huggingface-cli下载(基础,断线风险)

以前hf下载模型是不需要登录的,现在需要注册账号了,有些特殊的模型还需要额外的认证,比如最近开源的google的gemma。今天就围绕着gemma来讲解怎么下载hf上的模型。

因为gemma需要额外认证,所以应该能覆盖大部分hf的情形。其它的模型也可能需要绑定额外认证,这里不专门论述。

1.安装hf下载环境

需要安装hf的下载工具,这里建议使用conda环境即可。

conda create -n hf python=3.9
conda activate hf
pip install -U huggingface_hub

2.配置环境变量

理论上MacOS是继承自Unix,应该和Linux是一样的环境变量。

Linux

export HF_ENDPOINT=https://hf-mirror.com

Windows

$env:HF_ENDPOINT = "https://hf-mirror.com"

3.注册hf账号

这一步是必须的,因为后面gemma需要token才能下载,其它模型可能也要token,我没有一个个试。

这一步可能需要科学上网
Huggingface官网

准备一个live或gmail的邮箱,QQ我没有试(有些外站不支持QQ邮箱),可以的话最好。

在这里插入图片描述
填邮箱密码,一步步来,我就不细讲了,会的都会,不会的…

在这里插入图片描述

4.激活hf账号

基于上面注册成功后,这个时候还不能使用账号。hf会给你注册邮箱发送一份验证邮件,你点击链接激活账号就可以正常使用了。

5.绑定gemma认证

主页找到Models->google/gemma-7b

在这里插入图片描述
点击进去会有个认证,点击认证并通过就行了。

6.获取下载token

主页->个人头像
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.开始下载

这里要使用上面的token,使用上面安装的工具。

huggingface-cli download --token <你刚才复制的token> --resume-download google/gemma-7b --local-dir gemma-7b

等待下载完成就行了。

这个模式也有个缺点,有时候会不稳定,无法实现无人看守。但也没关系,重试就行了,会自动断点续传!

三、基于hfd.sh下载(建议,不易断线)

上面的huggingface-cli有个缺点,有时候会断线,不能完全保证无人坚守。hfd.sh方法我测试没遇到过中断的情况。

1.下载工具

wget https://hf-mirror.com/hfd/hfd.sh

2.赋予权限

chmod a+x hfd.sh

3.设置环境变量

Linux
export HF_ENDPOINT=https://hf-mirror.com
Windows
$env:HF_ENDPOINT = "https://hf-mirror.com"

如果在Shell配置,每打开一个新Shell都要执行下环境变量,你可以配置在系统变量或用户变量里,优先建议用户环境变量,防止配置错误对系统造成破坏。具体方法:

Linux系统

添加用户环境变量(不需要sudo权限)
sed -i '$aexport HF_ENDPOINT=https://hf-mirror.com' ~/.bashrc
source ~/.bashrc添加系统环境变量(需要sudo权限,`谨慎选择`sed -i '$aexport HF_ENDPOINT=https://hf-mirror.com' /etc/profile
source /etc/profile

Windows系统
我的电脑->右键属性->高级系统设置->环境变量,上面是用户变量,下面是系统变量,依然是建议添加用户变量。左边是变量名,右边是变量值。

在这里插入图片描述
在这里插入图片描述

注意:Windows系统添加完环境变量必须打开一个新的Shell才能读取新的变量!

4.开始下载

1.Linux系统

依然是先注册账户,拿到token。这里以chatglm3-6b为模板介绍下载方法:

./hfd.sh THUDM/chatglm3-6b --hf_username <你的huggingface账户名> --hf_token <你的token> --tool aria2c -x 4

--tool:可以选wgetaria2c两种,建议选aria2c
-x:指定的线程数,依据自身带宽和机器性能决策,我这里限带宽,测不出来实际差别

wget下载工具是Linux系统自带的,aria2c一般都不会预装。

安装aria2c

sudo apt update
sudo apt install aria2

2.Windows系统

hfd.sh是基于Linux系统编写的脚本,Windows系统无法直接运行,这里有个替代方法可以在Windows上运行,那就是安装Cygwin,使用Cygwin安装aria2wget两个工具。

在这里插入图片描述
这里不能再用Windows的环境变量了,Cygwin是在Windows上模拟的Linux环境,Windows的环境变量在Cygwin不生效。还是需要导出Linux的环境变量:

导出环境变量
export HF_ENDPOINT=https://hf-mirror.com开始下载
./hfd.sh THUDM/chatglm3-6b --hf_username <你的huggingface账户名> --hf_token <你的token> --tool aria2c -x 4

--tool:可以选wgetaria2c两种,建议选aria2c
-x:指定的线程数,依据自身带宽和机器性能决策,我这里限带宽,测不出来实际差别

aria2和wget都不是Cygwin预装的,需要手动添加!

这种方法适合那种需要在Windows上开发,又不想使用huggingface-cli的用户(断线困扰)。如果你是C或C++开发者,那么你的电脑应该是有Cygwin的,如果没有的话,这个方法对你来说就有点折腾了。依据个人需要来选择吧。


总结

1、总体来说还是方便的,不科学上网也能下载。
2、其它的模型复刻这种模式就行了。

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

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

相关文章

CSAPP-信息的表示和处理

文章目录 概念扫盲思想理解经典好图安全事件 概念扫盲 1.大端高位在前&#xff0c;小端低位在前 2.逻辑运算符&#xff08;&& 、||、&#xff01;&#xff09;与位级运算&#xff08;&、|、~&#xff09;的差异 3.宏可以保证无论代码如何编译&#xff0c;都能生成…

flutterandroidx支持,【工作经验分享】

基于Linux的pc启动过程 我们都知道&#xff0c;所有的程序软件包括操作系统都是运行在内存中的&#xff0c;然而我们的操作系统一般是存放在硬盘上的&#xff0c;当我们按下开机键的时候&#xff0c;此时内存中什么程序也没有&#xff0c;因此需要借助某种方式&#xff0c;将操…

百度SEO工具,自动更新网站的工具

在网站SEO的过程中&#xff0c;不断更新网站内容是提升排名和吸引流量的关键之一。而对于大多数网站管理员来说&#xff0c;频繁手动更新文章并进行SEO优化可能会是一项繁琐且耗时的任务。针对这一问题&#xff0c;百度自动更新文章SEO工具应运而生&#xff0c;它能够帮助网站管…

chartjs 饼状图

之前要把canvas先清除掉&#xff0c;不然刷新数据&#xff0c;还会有前面的图表 function clearCanvas(){$(#donutChart).remove();$(#chartdiv).append(<canvas id"donutChart" style"min-height: 500px; height: 500px; max-height: 500px; max-width: 70%…

浅谈mysql mvcc

目录 前言 mvcc 是如何工作的&#xff1f; 数据的更新 前言 mvcc 与一个事物的隔离级别有关&#xff0c;未提交读永远读的是当前值&#xff0c;串行化是通过加锁实现&#xff0c;这两种隔离级别都与mvcc 没有任何关系。只要一提到mvcc应该想到的是读提交以及可重复读&#…

vue+element ui上传图片到七牛云服务器

本来打算做一个全部都是前端完成的资源上传到七牛云的demo&#xff0c;但是需要获取token&#xff0c;经历了九九八十一难&#xff0c;最终还是选择放弃&#xff0c;token从后端获取&#xff08;springboot&#xff09;。如果你们有前端直接能解决的麻烦记得私我哦&#xff01;…

『Linux从入门到精通』第 ㉒ 期 - 动静态库

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f427;什么是库&#xff1f;&#x1f427;为什么要有库&#xff1f;&#x1f427;写一个自己的库&#x1f426;方法一&#x1f426;方法二 静态库&#x1f426;标准化&#x1f426;方法三 动态库&#x1f426;配置动…

python中自定义报错

class MyError(Exception):def __init__(self,num):#录入的数Exception.__init__(self)self.numnumdef __str__(self):return 这是我定义的第%d个异常 %(self.num)使用 try:raise MyError(4) except MyError as e:print(e)raise 其作用是指定抛出的异常名称&#xff0c;以及异常…

数据结构题目①——数组

前言 本篇文章为博主进行代码随想录——数组练习后的总结会涉及到每一道题目的详细的思路整理&#xff0c;以及本人的易错点&#xff0c;希望对大家有所帮助 数组介绍&#xff1a; 数组在C语言中就已经有所涉及&#xff0c;它是一个最基础的数据结构&#xff0c;而在数据结构中…

three 层级模型

group.remove(mesh1,mesh2);Vector3与模型位置、缩放属性 Group层级模型(树结构) 创建了两个网格模型mesh1、mesh2&#xff0c;通过THREE.Group类创建一个组对象group,然后通过add方法把网格模型mesh1、mesh2作为设置为组对象group的子对象&#xff0c;然后在通过执行scene.a…

jenkins部署maven项目

流程&#xff1a; jenkins从代码仓库读取代码&#xff0c;将代码文件放入jenkins的工作空间&#xff0c;将jenkins工作空间的代码进行打包&#xff0c;将jar包远程发送给服务器。 一&#xff1a;所需插件二&#xff1a;Tools 三&#xff1a;System&#xff1a; 配置ssh连接的…

python63-Python的循环之循环使用else

Python的循环都可以定义else代码块&#xff0c;当循环条件为False 时&#xff0c;程序会执行else代码块。如下代码示范了为while循环定义else代码块。 # !/usr/bin/env python# -*- coding: utf-8 -*-# Time : 2024/01# Author : Laopicount_i 0while count_i < 5:print(c…

Java集合相关面试题(2024大厂高频面试题系列)

1、说一说Java提供的常见集合&#xff1f;&#xff08;画一下集合结构图&#xff09; 在java中提供了量大类的集合框架&#xff0c;主要分为两类&#xff1a; 第一个是Collection 属于单列集合&#xff0c;第二个是Map 属于双列集合 在Collection中有两个子接口List和Set。…

【力扣hot100】刷题笔记Day14

前言 又是新的一周&#xff0c;快乐的周一&#xff0c;快乐地刷题&#xff0c;今天把链表搞完再干活&#xff01; 114. 二叉树展开为链表 - 力扣&#xff08;LeetCode&#xff09; 前序遍历 class Solution:def flatten(self, root: Optional[TreeNode]) -> None:if not r…

【IC前端虚拟项目】inst_buffer子模块DS与RTL编码

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 需要说明一下的是,在我所提供的文档体系里,并没有模块的DS文档哈,因为实际项目里我也不怎么写DS毕竟不是每个公司都和HISI一样对文档要求这么严格的。不过作为一个培训的虚拟项目,还是建议在时间充裕…

Docker技术概论(3):Docker 中的基本概念

Docker技术概论&#xff08;3&#xff09; Docker 中的基本概念 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://…

基于java+springboot女士电商平台系统源码+文档设计

基于javaspringboot女士电商平台系统源码文档设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末获取源…

C语言----动态内存管理(2)

1.这里总结动态内存管理里面的错误 &#xff08;1&#xff09;使用malloc开辟空间以后直接赋值 这个就是malloc开辟失败返回空指针&#xff0c;直接给空指针赋值就是错误的&#xff0c; tip1:使用malloc开辟空间以后一定要判断是否为空 &#xff08;2&#xff09; 越界访问…

Python批量提取文件夹中图片的名称及路径到指定的.txt文件中

目录 一、代码二、提取效果 一、代码 import os# 定义要保存的文件名 file_name "TestImage/Image_Visible_Gray.txt"# 读取文件夹路径 folder_path "TestImage/Image_Visible_Gray"# 遍历文件夹中的所有文件 with open(file_name, "w") as f…

可移植性(兼容性)测试指南

可移植性是指应用程序能够安装到不同的环境中&#xff0c;在不同的环境中使用&#xff0c;甚至可以移动到不同的环境中。当然&#xff0c;前两者对所有系统都很重要。就PC软件而言&#xff0c;鉴于操作系统、共存和互操作应用程序、硬件、带宽可用性等方面的快速变化&#xff0…