当前位置: 首页 > news >正文

【HuggingFace】模型下载至本地访问

目录

前言

一、环境依赖

方法一:在线安装依赖 

方法二:预先下载 .whl 离线包安装(推荐网络不佳用户)

 二、选择模型

 三、下载模型至本地访问

2.1 功能说明

 2.2 执行代码

 2.3 代码解析

 2.4 扩展:其它模型加载方式

四 、调用模型

4.1 执行代码

4.2 代码解析

五、多轮对话示例


前言

【为什么推荐本地部署?】

1️⃣ 零依赖网络和外部服务,更可靠稳定;

2️⃣ 无调用次数限制,更适合高频或批量推理;

3️⃣ 避免长期 API 费用,节省成本;

4️⃣ 保护用户隐私和数据安全;

5️⃣ 可自定义、深度优化;

6️⃣ 加载一次即可复用,低延迟高性能;

7️⃣ 离线可用(重要!)


【适合本地部署的情况】

如果你需要...本地部署就是更优选
长期运行的 AI 服务或应用
每天/每分钟有大量推理请求
需要保护用户数据隐私
自定义模型结构/调优能力
离线环境或局域网部署
拥有中高端显卡资源(如 RTX 3060/3090/A100)

【总结一句话】

如果你有硬件资源,追求性能稳定、成本低、数据安全、灵活性高,本地部署优于 API 调用


一、环境依赖

前提条件

安装好Anconda、Pycharm或VS code、CUDA和CUDNN(可选)


安装教程如下(按顺序安装):

【Anconda安装教程】

【Anconda安装教程】安装到环境配置全流程_anaconda安装环境配置-CSDN博客

【CUDA&CUDNN】

【CUDA&cuDNN安装】深度学习基础环境搭建_检查 cuda cudnn 安装-CSDN博客

【pytorch安装教程】

【Pytorch安装教程】深度学习框架-CSDN博客

方法一:在线安装依赖 

#创建虚拟环境(虚拟环境名:learn)
conda create --name learn python=3.11#激活虚拟环境
conda activate learn#安装pytorch
pip install torch==2.7.1+cu126 torchvision==0.22.1+cu126 torchaudio==2.7.1+cu126 --index-url https://download.pytorch.org/whl/cu126 --force-reinstall --no-cache-dir#安装transformers库
pip install transformers==4.53.0

方法二:预先下载 .whl 离线包安装(推荐网络不佳用户)

1、创建虚拟环境并进入

#创建虚拟环境(虚拟环境名:learn)
conda create --name learn python=3.11#激活虚拟环境
conda activate learn

2、下载pytorch离线包 

 说明:pytorch安装过程可能会出现网络不稳定的情况,从而导致下载失败,可通过下载whl文件的方式进行安装

如果你网络慢或中断,可以手动下载 .whl 文件,再离线安装

手动下载以下 3 个文件(来自 PyTorch 官网):

  • torch-2.7.1+cu126-cp311-cp311-win_amd64.whl

  • torchvision-0.22.1+cu126-cp311-cp311-win_amd64.whl

  • torchaudio-2.7.1+cu126-cp311-cp311-win_amd64.whl

下载好后并确定文件路径,以下是我的文件路径:

D:\下载\windows浏览器下载\torch-2.7.1+cu126-cp311-cp311-win_amd64.whl

D:\下载\windows浏览器下载\torchaudio-2.7.1+cu126-cp311-cp311-win_amd64.whl

D:\下载\windows浏览器下载\torchvision-0.22.1+cu126-cp311-cp311-win_amd64.whl

3、安装pytorch

在虚拟环境中执行以下安装命令:

pip install D:\下载\windows浏览器下载\torch-2.7.1+cu126-cp311-cp311-win_amd64.whlpip install D:\下载\windows浏览器下载\torchaudio-2.7.1+cu126-cp311-cp311-win_amd64.whlpip install D:\下载\windows浏览器下载\torchvision-0.22.1+cu126-cp311-cp311-win_amd64.whl

4、安装transformers库

#安装transformers库
pip install transformers==4.53.0

 二、选择模型

进入官网:https://huggingface.co/

这里选择了一个qwen的小参数模型进行测试,可以根据自己的需求选择下载。

但需注意:这里演示的“文本生成模型”,如果想要尝试其它类型的模型,在【三、下载模型至本地访问】的步骤中需要对导入依赖进行相应的更改。


 三、下载模型至本地访问

2.1 功能说明

该代码主要用于下载“因果语言建模(文本生成)”类(Causal Language Modeling,简称 CausalLM)的模型

比如:

  • GPT 系列(GPT2、GPT3、GPT-NEOX、ChatGLM 等)

  • Chat 类模型(deepseek、Qwen、Baichuan、Yi 等)

  • 用于 文本生成任务(如对话、补全、续写)


【什么是 CausalLM?】

  • 它是左到右逐词预测的模型。

  • 举例:输入“今天的天气”,模型会生成后续词“很好”。

  • 常用于聊天机器人、自动写作等任务。 


 2.2 执行代码

【使用方法】

1、选好模型

使用该代码前,请先在HuggingFace上选择好自己要下载的模型

步骤:选好模型→复制其名称

2、更改模型名称

写入自己选择的模型名称即可

#将模型和分词器下载到本地,并指定保存路径
model_name = "Qwen/Qwen3-0.6B"

【Qwen/Qwen3-0.6B】就是【二、选择模型】步骤中复制的模型名称


3、更改选择存储路径

选择自己的存放路径

cache_dir = "model2/uer/Qwen/Qwen3-0.6B"

4、运行程序

模型加载和下载需要花费较长时间


5、查看文件

在项目根目录找到路径【model2/uer/Qwen/Qwen3-0.6B】,查看文件是否完整,完整即下载成功

#将模型下载到本地调用
from transformers import AutoModelForCausalLM,AutoTokenizer#将模型和分词器下载到本地,并指定保存路径
model_name = "Qwen/Qwen3-0.6B"
cache_dir = "model2/uer/Qwen/Qwen3-0.6B"#下载模型
AutoModelForCausalLM.from_pretrained(model_name,cache_dir=cache_dir)
#下载分词工具
AutoTokenizer.from_pretrained(model_name,cache_dir=cache_dir)print(f"模型分词器已下载到:{cache_dir}")

 2.3 代码解析

1、依赖库

from transformers import AutoModelForCausalLM, AutoTokenizer

【AutoModelForCausalLM】自动加载用于**因果语言建模(文本生成)**的模型(如 GPT、ChatGLM 等)。

【AutoTokenizer】自动加载与模型匹配的分词器。


2、定义离线保存模型名和存储路径

model_name = "uer/gpt2-chinese-cluecorpussmall"
cache_dir = "model/uer/gpt2-chinese-cluecorpussmall"

【model_name】Hugging Face 上的模型名称。这里选的是中文 GPT2 模型,作者是 uer。

【cache_dir】设置本地缓存路径,模型和分词器都会下载到这个文件夹,避免每次都联网下载。


3、下载模型

AutoModelForCausalLM.from_pretrained(model_name, cache_dir=cache_dir)

下载并缓存 模型权重和配置文件cache_dir

作用相当于:

  • 下载 pytorch_model.bin

  • 下载 config.json 等元信息


✅4、下载并缓存 分词器配置与词表文件

AutoTokenizer.from_pretrained(model_name, cache_dir=cache_dir)

包括:

  • vocab.txt / vocab.json

  • tokenizer_config.json


✅5、打印提示信息

print(f"模型分词器已下载到:{cache_dir}")

打印提示信息,告诉你本地路径在哪里,方便之后 离线调用


 2.4 扩展:其它模型加载方式

🧩 如果你想做其他任务,需要对应的加载方式:

任务类型加载方式举例模型
✅ 文本生成AutoModelForCausalLMGPT2、ChatGLM、Qwen
✅ 文本分类AutoModelForSequenceClassificationBERT、RoBERTa
✅ 文本问答AutoModelForQuestionAnsweringBERT-QA、ALBERT
✅ 序列标注AutoModelForTokenClassificationNER 任务
✅ 句子对匹配AutoModelForSequenceClassification情感分析、自然语言推理(NLI)
✅ 编码器输出AutoModelAutoModelWithLMHead取特征用
✅ Encoder-DecoderAutoModelForSeq2SeqLMBART、T5、mT5

 ✅ 举个例子:文本分类任务用法

from transformers import AutoTokenizer, AutoModelForSequenceClassificationmodel = AutoModelForSequenceClassification.from_pretrained("bert-base-chinese")
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")

四 、调用模型

4.1 执行代码

你这段代码实现了一个 基于 GPU 离线运行的 Qwen3 模型中文文本生成系统,可以灵活控制生成策略(长度、创造力、候选数量等),非常适合中文对话或写作类任务。


【使用方法】

修改【model_dir】换成包含config.json的路径,如:

D:\computer_soft\Microsoft VS Code\python_project\my_app\model2\uer\Qwen\Qwen3-0.6B\models--Qwen--Qwen3-0.6B\snapshots\e6de91484c29aa9480d55605af694f39b081c455
#本地离线调用GPT2
from transformers import AutoModelForCausalLM,AutoTokenizer,pipeline#设置具体包含config.json的目录,只支持绝对路径
model_dir = r"D:\computer_soft\Microsoft VS Code\python_project\my_app\model2\uer\Qwen\Qwen3-0.6B\models--Qwen--Qwen3-0.6B\snapshots\e6de91484c29aa9480d55605af694f39b081c455"#加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)#使用加载的模型和分词器创建生成文本的pipeline
generator = pipeline("text-generation",model=model,tokenizer=tokenizer,device="cuda")#device="cuda"表示使用 GPU(默认是 "cpu")
#generator = pipeline("text-generation",model=model,tokenizer=tokenizer)    #不加device="cuda"   # 👈 表示使用 "cpu"运行#生成文本
# output = generator("你好,我是一款语言模型,",max_length=50,num_return_sequences=1)
output = generator("你好,我是一款语言模型,",#生成文本的输入种子文本(prompt)。模型会根据这个初始文本,生成后续的文本max_length=50,#指定生成文本的最大长度。这里的 50 表示生成的文本最多包含 50 个标记(tokens)num_return_sequences=1,#参数指定返回多少个独立生成的文本序列。值为 1 表示只生成并返回一段文本。truncation=True,#该参数决定是否截断输入文本以适应模型的最大输入长度。如果 True,超出模型最大输入长度的部分将被截断;如果 False,模型可能无法处理过长的输入,可能会报错。temperature=0.7,#该参数控制生成文本的随机性。值越低,生成的文本越保守(倾向于选择概率较高的词);值越高,生成的文本越多样(倾向于选择更多不同的词)。0.7 是一个较为常见的设置,既保留了部分随机性,又不至于太混乱。top_k=50,#该参数限制模型在每一步生成时仅从概率最高的 k 个词中选择下一个词。这里 top_k=50 表示模型在生成每个词时只考虑概率最高的前 50 个候选词,从而减少生成不太可能的词的概率。top_p=0.9,#该参数(又称为核采样)进一步限制模型生成时的词汇选择范围。它会选择一组累积概率达到 p 的词汇,模型只会从这个概率集合中采样。top_p=0.9 意味着模型会在可能性最强的 90% 的词中选择下一个词,进一步增加生成的质量。clean_up_tokenization_spaces=True#该参数控制生成的文本中是否清理分词时引入的空格。如果设置为 True,生成的文本会清除多余的空格;如果为 False,则保留原样。默认值即将改变为 False,因为它能更好地保留原始文本的格式。
)
print(output)

运行结果

Device set to use cuda
Both `max_new_tokens` (=256) and `max_length`(=50) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation 
for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)
[{'generated_text': '你好,我是一款语言模型,能根据用户输入的信息,进行多轮对话,与用户交流关于不同主题的讨论,比如科技、文化、教育等。我需要为这个
模型设计一个清晰、易用的对话界面,并且能够支持用户输入多语言。我需要确保界面具有良好的设计,包括视觉效果和交互体验。同时,我需要考虑如何将这些功能 
整合到一个简洁、直观的界面中,让用户能够轻松地使用它。\n我的目标是创建一个能够帮助用户进行多语言交流的界面,同时保持界面的简洁和直观。为了让用户能 
够轻松地使用这个界面,我需要确保界面设计和交互体验都是用户友好。我需要考虑如何将这些功能整合到一个简洁、直观的界面中,让用户能够轻松地使用它。\n现 
在,我需要考虑如何设计一个用户友好的对话界面,包括视觉设计和交互体验。我需要确保界面具有良好的设计,包括视觉效果和交互体验,同时支持多语言和多轮对 
话。\n我需要考虑如何将这些功能整合到一个简洁、直观的界面中,让用户能够轻松地使用它。我现在需要开始设计这个界面。\n首先,我需要确定界面的主要功能和 
组件,然后考虑如何将这些组件'}]

4.2 代码解析

1、库名依赖

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
  • AutoModelForCausalLM:加载因果语言模型(Causal Language Model),用于文本生成任务。

  • AutoTokenizer:加载与模型配套的分词器(Tokenizer)。

  • pipeline:Transformers 提供的高级封装,可以快速构建推理任务,如文本生成、情感分类等。


2、设置本地模型路径

model_dir = r"D:\computer_soft\Microsoft VS Code\python_project\my_app\model2\uer\Qwen\Qwen3-0.6B\models--Qwen--Qwen3-0.6B\snapshots\e6de91484c29aa9480d55605af694f39b081c455"
  • 指定的是一个 本地模型的绝对路径

  • 路径下需要包含 config.json, pytorch_model.bin, tokenizer_config.json, tokenizer.modelvocab.txt 等必要文件。

  • 这是 Hugging Face 下载下来的模型的实际缓存目录。


3、加载模型与分词器(Tokenizer)

model = AutoModelForCausalLM.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)
  • 离线加载模型和分词器,不访问网络。

  • 会自动读取 config.jsonpytorch_model.bin 等文件初始化模型。


4、构建文本生成管道(pipeline)

generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device="cuda")
  • pipeline("text-generation", ...):创建一个专用于 文本生成 的推理管道。

  • device="cuda":表示使用 GPU 运行模型推理(需要你机器有 CUDA 环境和 GPU)。

    • 若写 "cpu" 或不写 device,则用 CPU。

    • 也可以用 device=0(GPU0)、device=-1(CPU)。

若电脑有GPU建议用GPU运行


5、 调用模型进行文本生成

output = generator("你好,我是一款语言模型,",max_length=50,num_return_sequences=1,truncation=True,temperature=0.7,top_k=50,top_p=0.9,clean_up_tokenization_spaces=True
)

🔍 参数详解:

参数说明
prompt输入的种子文本,模型基于此生成后续内容
max_length=50最大生成 token 数,不含 input 的长度
num_return_sequences=1返回几段生成文本(n 条候选)
truncation=True如果输入太长则自动截断,避免超出模型最大长度
temperature=0.7控制“创造力”程度(越低越保守)
top_k=50每次生成时仅在概率最高的前 50 个词中采样
top_p=0.9nucleus sampling:累计概率前 90% 的词中采样
clean_up_tokenization_spaces=True清理分词过程中引入的多余空格

五、多轮对话示例

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline# 模型路径(修改为你的本地路径)
model_dir = r"D:\computer_soft\Microsoft VS Code\python_project\my_app\model2\uer\Qwen\Qwen3-0.6B\models--Qwen--Qwen3-0.6B\snapshots\e6de91484c29aa9480d55605af694f39b081c455"# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)# 创建生成器
generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device="cuda")# 初始化对话历史
history = []def chat(prompt, history, max_length=256):# 构建完整对话输入full_input = ""for user, bot in history:full_input += f"用户:{user}\nAI:{bot}\n"full_input += f"用户:{prompt}\nAI:"# 模型生成response = generator(full_input,max_length=max_length,num_return_sequences=1,truncation=True,temperature=0.7,top_k=50,top_p=0.9,clean_up_tokenization_spaces=True)[0]['generated_text']# 截取新增回答部分reply = response[len(full_input):].strip().split('\n')[0].strip()return reply# 简易对话循环
while True:user_input = input("你:")if user_input.lower() in ["exit", "quit", "退出"]:breakbot_reply = chat(user_input, history)print("AI:", bot_reply)history.append((user_input, bot_reply))

运行结果

Device set to use cuda
你:你好 
Both `max_new_tokens` (=256) and `max_length`(=256) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)
AI: 你好,很高兴见到你!我是一个AI助手,可以帮你解答问题。如果有什么问题,欢迎随时告诉我。
你:讲一个笑话吧
Both `max_new_tokens` (=256) and `max_length`(=256) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)
AI: 当然可以!这里有一个有趣的笑话:为什么鸟儿喜欢打游戏?因为它们需要在空中飞行!
你:不好笑
Both `max_new_tokens` (=256) and `max_length`(=256) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)
AI: 明白了,那我们来玩个游戏吧!我猜你猜不到多少个笑话,你来猜第一个笑话,然后我来猜下一个!

说明:因为这里模型参数较小,所以回答的质量上会差一些,如果想要更高质量的回答,可以根据自己电脑GPU大小适当考虑使用更高参数的模型。

模型越大,所需的 GPU 显存(VRAM)和硬件资源也就越高。这条规律适用于所有大语言模型(LLMs),无论是 GPT、Qwen、LLaMA 还是 ChatGLM。

http://www.lqws.cn/news/571915.html

相关文章:

  • SpringMVC实战:从配置到JSON处理全解析
  • 开源免费计划工具:帮你高效规划每一天
  • UE5 Grid3D 学习笔记
  • 什么是IPFS(InterPlanetary File System,星际文件系统)
  • c# 在sql server 数据库中批插入数据
  • C++ 格式化输入输出
  • 「Java案例」输出24个希腊字母
  • 计算机组成原理与体系结构-实验一 进位加法器(Proteus 8.15)
  • Linux下的调试器-gdb(16)
  • 信息安全与网络安全---引言
  • 矩阵的定义和运算 线性代数
  • 设计模式 | 组合模式
  • VMware设置虚拟机为固定IP
  • Transformer结构与代码实现详解
  • redisson看门狗实现原理
  • Linux基本命令篇 —— head命令
  • 【锁相环系列5】再谈数字锁相环
  • python sklearn 机器学习(1)
  • 多模态大语言模型arxiv论文略读(143)
  • 代理模式 - Flutter中的智能替身,掌控对象访问的每一道关卡!
  • ⚙️ 深度学习模型编译器实战:解锁工业级部署新范式​​—— 基于PyTorch-MLIR的全流程优化指南(开源工具链集成)​​
  • Python银行管理系统01升级(适合初学者)
  • 【百日精通JAVA | 语法篇】static关键字
  • CppCon 2017 学习:Undefined Behavior in 2017
  • idea运行到远程机器 和 idea远程JVM调试
  • x86 rop攻击理解2
  • 设计模式-外观模式、适配器模式
  • 设备健康状态实时监测:从技术原理到中讯烛龙的智能实践
  • X-Search:Spring AI实现的AI智能搜索
  • redis延时双删,为什么第一次删除