通过 HuggingFace 调用 Llama3

前言

在上一篇文章中,我们通过 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 搜索并选择模型

  1. 登录后,点击顶部导航栏的 “Models”
  2. 在搜索栏输入 llama,找到目标模型并点击进入。

2.2 提交申请

进入模型页面后,点击 “Expand to review access” 按钮展开许可说明。

  1. 滑动到页面底部,填写申请信息。
  2. 填写内容不用完全真实,但尽量不要太离谱。
  3. 提交申请后,等待管理员审批。

2.3 查看申请状态

  1. 点击头像,进入 “Settings”
  2. 左侧菜单选择 “Gated Repositories”
  3. 查看申请状态,状态变为 ACCEPTED 即表示通过。

通常审批时间在半小时左右。

3. 获取 Access Token

  1. “Settings” 页面,点击左侧的 “Access Tokens”
  2. 点击 “Create new token” 按钮。

  1. 在弹出框中选择 Read 权限,输入 Token 名称并点击 “Create Token”

  1. 复制生成的 Token,后续用于模型下载。

使用 Python 下载并调用 Llama 模型

1. 安装依赖

在运行代码前,需要安装必要的 Python 库:

1
pip install transformers torch

2. 代码实现

以下是一个简单的调用示例,将 Hugging Face Token 替换为你自己的 Token 即可运行。

创建一个名为 demo.py 的文件,粘贴以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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. 运行代码

执行以下命令运行代码:

1
python demo.py

首次运行会从 Hugging Face 自动下载模型,完成后会生成结果。

4. 示例输出

结语

至此,我们成功演示了如何通过 Hugging Face 的 Transformers 调用 Llama 模型,并获取了模型的回答。

但是如果你的需求只是简单地调用模型,而无需进行微调或复杂的部署,可以尝试使用 Ollama。它不仅操作更加便捷,还提供了开箱即用的 RESTful 接口,适合快速集成到生产环境中。

下一篇,我将会讲解如何通过 Ollama 下载部署 Llama 模型并调用。

相关链接


通过 HuggingFace 调用 Llama3
https://blog.pangcy.cn/2025/01/09/AI 工具与技术/大模型/通过 HuggingFace 调用 Llama3/
作者
子洋
发布于
2025年1月9日
许可协议