前言
在上一篇文章中,我们通过 Meta 官网下载了 Llama 模型,但由于官方提供的 Demo 需要显卡支持,且修改后仍未成功运行,最终选择通过 Hugging Face 下载模型。这篇文章将详细介绍如何使用 Hugging Face 平台下载和调用 Llama 模型,并提供代码示例用于测试。
Hugging Face
Hugging Face 是一家专注于人工智能和自然语言处理(NLP)的公司,以其开源工具和模型生态系统而闻名。它提供了丰富的工具链,包括:
- Transformers:加载、微调和部署预训练模型。
- Datasets:用于高效加载和处理数据集。
- Hugging Face Hub:开源模型和数据集托管平台。
通过 Hugging Face,开发者可以方便地访问各种预训练模型,并快速部署到自己的项目中。
1. 注册 Hugging Face 账号
首先,进入 Hugging Face 官网,注册一个账号。这一步没什么好讲的,不再赘述。
2. 申请模型访问权限
Llama 模型是受限制的资源,使用前需要申请访问权限。以下是具体步骤:
2.1 搜索并选择模型
- 登录后,点击顶部导航栏的 "Models"。
- 在搜索栏输入
llama,找到目标模型并点击进入。
2.2 提交申请
进入模型页面后,点击 "Expand to review access" 按钮展开许可说明。
- 滑动到页面底部,填写申请信息。
- 填写内容不用完全真实,但尽量不要太离谱。
- 提交申请后,等待管理员审批。
2.3 查看申请状态
- 点击头像,进入 "Settings"。
- 左侧菜单选择 "Gated Repositories"。
- 查看申请状态,状态变为
ACCEPTED即表示通过。
通常审批时间在半小时左右。
3. 获取 Access Token
- 在 "Settings" 页面,点击左侧的 "Access Tokens"。
- 点击 "Create new token" 按钮。
- 在弹出框中选择
Read权限,输入 Token 名称并点击 "Create Token"。
- 复制生成的 Token,后续用于模型下载。
使用 Python 下载并调用 Llama 模型
1. 安装依赖
在运行代码前,需要安装必要的 Python 库:
pip install transformers torch
2. 代码实现
以下是一个简单的调用示例,将 Hugging Face Token 替换为你自己的 Token 即可运行。
创建一个名为 demo.py 的文件,粘贴以下代码:
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
# 模型名称
model = "meta-llama/Llama-3.2-1B"
# Hugging Face Token
auth_token = "hf_xxxxxxxxxxxxx"
# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained(model, token=auth_token)
model = AutoModelForCausalLM.from_pretrained(model, token=auth_token)
model.config.pad_token_id = tokenizer.eos_token_id
# 构建文本生成流水线
pipeline = transformers.pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
torch_dtype=torch.float16,
device_map="auto",
framework="pt"
)
# 输入提示文本
prompt = "<s>[INST] 你认为学习的意义是什么? [/INST]"
# 模型生成
sequences = pipeline(
prompt,
do_sample=True, # 使用采样策略
top_k=10, # 采样时只保留前 k 个最高概率的 token
num_return_sequences=4, # 返回生成序列数量
return_full_text=False, # 只返回生成文本
max_length=500, # 最大生成长度
temperature=0.7, # 随机性控制
repetition_penalty=1.2, # 重复惩罚因子
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
truncation=True # 超长截断
)
# 输出结果
for seq in sequences:
response = seq['generated_text'].split('[/INST]')[-1].strip()
print(f"AI: {response}")
3. 运行代码
执行以下命令运行代码:
python demo.py
首次运行会从 Hugging Face 自动下载模型,完成后会生成结果。
4. 示例输出
结语
至此,我们成功演示了如何通过 Hugging Face 的 Transformers 调用 Llama 模型,并获取了模型的回答。
但是如果你的需求只是简单地调用模型,而无需进行微调或复杂的部署,可以尝试使用 Ollama。它不仅操作更加便捷,还提供了开箱即用的 RESTful 接口,适合快速集成到生产环境中。
下一篇,我将会讲解如何通过 Ollama 下载部署 Llama 模型并调用。
相关链接
- Hugging Face 官网:huggingface.co/
- Llama 模型主页:huggingface.co/meta-llama