基本配置:RTX 4060(8GB),推理过程最高显存占用为3GB。
步骤 1: 从 Hugging Face Model Hub 下载模型文件
-
访问 Hugging Face Model Hub: 打开浏览器,访问以下 URL:
https://huggingface.co/facebook/opt-1.3b -
查找模型文件: 在页面上,你应该能看到 “Files and versions” 选项卡。点击它。
-
下载必要的文件:
- 你需要下载以下文件 (确保你的网络连接良好):
config.json
: 模型的配置信息。pytorch_model.bin
: 模型的权重文件。tokenizer.json
: tokenizer 的配置信息。special_tokens_map.json
: 特殊 token 映射信息。tokenizer_config.json
: tokenizer 的配置信息。vocab.json
: 词汇表信息。merges.txt
: 合并文件。
- 建议在你的本地创建一个文件夹,例如
opt_1.3b_model
,并将下载的所有文件放入此文件夹中。
- 你需要下载以下文件 (确保你的网络连接良好):
步骤 2: 使用代码加载本地模型文件
以下是如何使用本地下载的模型文件加载 OPT-1.3B 模型的代码:
import torch
from transformers import OPTForCausalLM, AutoTokenizer# 1. 指定模型本地路径
model_path = "opt_1.3b_model" # 替换为你的模型文件夹路径# 2. 加载 Tokenizer
tokenizer = AutoTokenizer.from_pretrained(model_path)# 3. 加载模型并配置为 FP16
model = OPTForCausalLM.from_pretrained(model_path,torch_dtype=torch.float16,low_cpu_mem_usage=True,
)# 4. 将模型移动到 GPU (如果可用)
if torch.cuda.is_available():model.to("cuda")# 5. 准备输入
input_text = "May I help you?"
inputs = tokenizer(input_text, return_tensors="pt")# 6. 将输入移动到 GPU (如果可用)
if torch.cuda.is_available():inputs = {k: v.cuda() for k, v in inputs.items()}# 7. 生成文本
with torch.no_grad():outputs = model.generate(**inputs, max_length=50, num_return_sequences=1)generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)# 8. 输出结果
print("Input Text:", input_text)
print("Generated Text:", generated_text)
代码解释:
-
model_path = "opt_1.3b_model"
: 将model_path
变量设置为你下载模型文件的文件夹路径。 请务必根据你的实际路径进行修改。 -
tokenizer = AutoTokenizer.from_pretrained(model_path)
: 使用AutoTokenizer.from_pretrained()
方法,并将model_path
作为参数,从本地文件夹加载 tokenizer。 -
model = OPTForCausalLM.from_pretrained(...)
: 使用OPTForCausalLM.from_pretrained()
方法,并将model_path
作为参数,从本地文件夹加载模型,并配置 FP16。
其他代码部分与之前的示例相同,用于推理和生成文本。
使用步骤:
-
确保你已经从 Hugging Face 下载了必要的文件,并将它们放在本地的
opt_1.3b_model
文件夹中(或你指定的路径)。 -
将上面的 Python 代码保存为
.py
文件 (例如load_local_opt.py
). -
运行该 Python 文件:
python load_local_opt.py
。
优点:
- 本地控制: 你可以完全控制模型文件的下载位置和缓存策略。
- 离线使用: 你可以在没有互联网连接的情况下使用本地下载的模型。
- 网络限制: 如果你在网络受限的环境中工作,这种方法是很有用的。
测试结果:
可以看到,其实参数规模为1.3B的模型还是挺傻的,要正常进行对话估计参数规模得10B上下,此时常规消费级显卡的显存肯定不够用了。