快速下載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.pswp.cn/news/712063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712063.shtml
英文地址,請注明出處:http://en.pswp.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;它能夠幫助網站管…

搭建nginx+keepalived高可用(主備模式)

nginx安裝 1. 前置依賴安裝 yum install gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel -y2. 編譯安裝nginx nginx下載地址&#xff1a; https://nginx.org/en/download.html ## 安裝包位置&#xff1a;信息港16.11:/root/shl tar xvf nginx-1.20.2.ta…

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;以及異常…

題目 1240: 生日日數

題目描述: CCC老師的生日是YY年MM月DD日&#xff0c;他想知道自己出生后第一萬天紀念日的日期&#xff08;出生日算第0天&#xff09;。 代碼: package lanqiao;import java.time.LocalDate; import java.util.*;public class Main {public static void main(String[] args)…

數據結構題目①——數組

前言 本篇文章為博主進行代碼隨想錄——數組練習后的總結會涉及到每一道題目的詳細的思路整理&#xff0c;以及本人的易錯點&#xff0c;希望對大家有所幫助 數組介紹&#xff1a; 數組在C語言中就已經有所涉及&#xff0c;它是一個最基礎的數據結構&#xff0c;而在數據結構中…

Java學習—FileInputStream

在Java編程中&#xff0c;文件操作是日常任務之一。無論是讀取配置文件、處理圖像&#xff0c;還是讀寫日志文件&#xff0c;理解如何有效地進行文件讀取都是非常重要的。Java提供了多種方式來操作文件&#xff0c;而FileInputStream是其中最基礎也是最直接的一種。本文將深入探…

Spring面試系列-01

1. 什么是 Spring 框架? Spring中文翻譯過來是春天的意思,被稱為J2EE的春天,是一個開源的輕量級的Java開發框架, 具有控制反轉(IoC)和面向切面(AOP)兩大核心。Java Spring框架通過聲明式方式靈活地進行事務的管理,提高開發效率和質量。 Spring框架不僅限于服務器端的…

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連接的…

github要求2fa身份驗證

前言 github登陸的時候發現要求2fa驗證, 2fa是啥?咋驗證? 解決 2FA&#xff08;Two-Factor Authentication&#xff0c;雙因素身份驗證&#xff09; 就是在賬戶和密碼的基礎上增加一次驗證碼驗證,這樣即使密碼被竊取,由于黑客沒有你的驗證碼也無法登陸 就像是銀行的u盾一樣…

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…

回溯 Leetcode 51 N皇后

N皇后 Leetcode 51 學習記錄自代碼隨想錄 按照國際象棋的規則&#xff0c;皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。 n 皇后問題 研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。 給你一個整數 n &#xff0c;返回所…