openPangu-Embedded-7B 的部署与使用指南
本文详细介绍了openPangu-Embedded-7B模型的部署与使用方法,包括环境准备、依赖安装、模型权重完整性校验、推理示例与代码解析以及快慢思考模式的切换与应用。通过本文,您将了解如何正确配置硬件和软件环境,验证模型权重完整性,运行推理脚本,并根据任务需求灵活选择快慢思考模式。
环境准备与依赖安装
在开始部署和使用 openPangu-Embedded-7B 之前,确保您的系统环境满足以下要求,并正确安装所有必要的依赖项。本节将详细介绍硬件和软件环境的要求,以及如何安装和配置依赖项。
硬件要求
openPangu-Embedded-7B 是一个高性能的嵌入式语言模型,对硬件资源有一定的要求。以下是推荐的硬件配置:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 4 核 | 8 核或更高 |
| 内存 | 16GB | 32GB 或更高 |
| 存储 | 50GB 可用空间 | 100GB 或更高 |
| GPU | 支持 CUDA 的 NVIDIA GPU | NVIDIA A100 或更高 |
软件要求
确保您的操作系统和软件环境满足以下条件:
| 软件 | 版本要求 | 备注 |
|---|---|---|
| 操作系统 | Linux (Ubuntu 20.04+) | 推荐使用 Ubuntu 22.04 |
| Python | 3.8 或更高 | 需安装 pip |
| CUDA | 11.0 或更高 | 仅 GPU 部署需要 |
| cuDNN | 8.0 或更高 | 仅 GPU 部署需要 |
依赖安装
openPangu-Embedded-7B 的依赖项可以通过以下步骤安装:
-
克隆项目仓库
运行以下命令克隆项目到本地:git clone https://gitcode.com/ascend-tribe/openpangu-embedded-7b-model.git cd openpangu-embedded-7b-model -
安装 Python 依赖
项目提供了一个requirements.txt文件,列出了所有必要的 Python 依赖项。运行以下命令安装:pip install -r requirements.txt -
验证 CUDA 和 cuDNN
如果您计划使用 GPU 加速,请确保 CUDA 和 cuDNN 已正确安装并配置。运行以下命令验证:nvcc --version输出应显示 CUDA 版本信息。如果未安装,请参考 NVIDIA 官方文档进行安装。
-
安装其他工具
某些功能可能需要额外的工具,例如ripgrep用于代码搜索。运行以下命令安装:sudo apt-get install ripgrep
环境验证
完成上述步骤后,运行以下命令验证环境是否配置正确:
python -c "import torch; print(torch.cuda.is_available())"
如果输出为 True,则表示 GPU 支持已启用。
常见问题
以下是一些常见的环境配置问题及其解决方法:
| 问题 | 解决方法 |
|---|---|
pip install 失败 |
检查网络连接,或使用 pip install --upgrade pip 升级 pip |
| CUDA 未检测到 | 确保 CUDA 驱动和工具包已正确安装,并添加到系统路径 |
| 内存不足 | 关闭不必要的应用程序,或增加系统内存 |
通过以上步骤,您已成功完成 openPangu-Embedded-7B 的环境准备与依赖安装。接下来,您可以继续部署和运行模型。
模型权重完整性校验方法
在部署和使用 openPangu-Embedded-7B 模型时,确保下载的模型权重文件完整且未被篡改是至关重要的。本节将详细介绍如何通过校验哈希值来验证模型权重的完整性。
1. 校验文件说明
项目根目录下的 checklist.chk 文件包含了所有模型权重文件的 SHA-256 哈希值。以下是该文件的部分内容示例:
2aae256964b995a9416935d2aeb32cb9028f413a8e9bc2030dbe00e02b38ffec *./model-00001-of-00004.safetensors
6b0c4bcd085187fc8a1e1aeeec59afac21c876ba9b47e275e87b8ce56e058fec *./model-00002-of-00004.safetensors
511d39bdc8d619627aa701820c141afa1c3a1139450e2d2d6892004bc7b61721 *./model-00003-of-00004.safetensors
52ae62d754a63d2fcd8d1f40be1332dd161a2105ff7c43622328ef3800d4d891 *./model-00004-of-00004.safetensors
9bf645e8399be6d99000eae64bd172b5c457d6d2c44d2257b47eb97a3c41aeda *./model.safetensors.index.json
2. 校验方法
2.1 使用 sha256sum 工具
在 Linux 环境下,可以通过以下命令校验模型文件的完整性:
sha256sum -c checklist.chk
如果所有文件的哈希值与 checklist.chk 中的记录匹配,命令行会输出类似以下内容:
./model-00001-of-00004.safetensors: OK
./model-00002-of-00004.safetensors: OK
./model-00003-of-00004.safetensors: OK
./model-00004-of-00004.safetensors: OK
./model.safetensors.index.json: OK
2.2 针对 ARM64 架构的校验
对于 ARM64 架构的系统,可以使用以下命令生成哈希值并手动比对:
sha256sum model-*.safetensors model.safetensors.index.json
3. 校验失败的处理
如果校验失败,命令行会输出类似以下内容:
./model-00001-of-00004.safetensors: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match
此时,请重新下载对应的模型文件,并再次运行校验命令。
4. 自动化校验脚本
为了方便使用,可以编写一个自动化校验脚本。以下是一个示例脚本:
#!/usr/bin/env bash
MODEL_PATH="/path/to/your/model/files"
cd "$MODEL_PATH" || exit 1
if [ "$(uname -m)" = "arm64" ]; then
echo "Running on ARM64, generating hashes for manual verification:"
sha256sum model-*.safetensors model.safetensors.index.json
else
echo "Running standard verification:"
sha256sum -c checklist.chk
fi
将脚本保存为 verify_model.sh,并赋予执行权限:
chmod +x verify_model.sh
运行脚本:
./verify_model.sh
5. 注意事项
- 确保
checklist.chk文件未被修改。 - 如果校验失败,请勿使用损坏的模型文件,以免影响推理结果。
- 对于大型文件,校验可能需要较长时间,请耐心等待。
通过以上步骤,您可以确保 openPangu-Embedded-7B 模型权重的完整性,为后续的部署和使用打下坚实基础。
推理示例与代码解析(generate.py)
openPangu-Embedded-7B 的推理功能通过 generate.py 脚本实现,该脚本基于 transformers 框架,支持模型的加载、输入处理、文本生成以及输出解析。以下是对该脚本的详细解析与示例说明。
1. 脚本功能概述
generate.py 主要完成以下任务:
- 加载预训练的模型和分词器。
- 处理用户输入,包括系统提示和用户问题。
- 执行文本生成任务,支持快慢思考模式切换。
- 解析生成的输出,提取思考内容和最终回答。
2. 代码解析
2.1 模型与分词器加载
from transformers import AutoModelForCausalLM, AutoTokenizer
model_local_path = "path_to_openPangu-Embedded-7B"
tokenizer = AutoTokenizer.from_pretrained(
model_local_path,
use_fast=False,
trust_remote_code=True,
local_files_only=True
)
model = AutoModelForCausalLM.from_pretrained(
model_local_path,
trust_remote_code=True,
torch_dtype="auto",
device_map="npu",
local_files_only=True
)
AutoTokenizer: 用于加载分词器,支持自定义分词逻辑。AutoModelForCausalLM: 加载因果语言模型,支持生成任务。device_map="npu": 指定模型运行在昇腾 NPU 上。
2.2 输入处理
sys_prompt = "你必须严格遵守法律法规和社会道德规范..." # 系统提示
prompt = "Give me a short introduction to large language model." # 用户输入
no_thinking_prompt = prompt + " /no_think" # 快思考模式标记
messages = [
{"role": "system", "content": sys_prompt},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
sys_prompt: 定义系统提示,约束模型生成内容。no_thinking_prompt: 通过添加/no_think标记切换至快思考模式。apply_chat_template: 将对话格式化为模型输入。
2.3 文本生成
outputs = model.generate(
**model_inputs,
max_new_tokens=32768,
eos_token_id=45892,
return_dict_in_generate=True
)
max_new_tokens: 控制生成的最大 token 数量。eos_token_id: 指定结束符 token ID。
2.4 输出解析
input_length = model_inputs.input_ids.shape[1]
generated_tokens = outputs.sequences[:, input_length:]
output_sent = tokenizer.decode(generated_tokens[0])
thinking_content = output_sent.split("[unused17]")[0].split("[unused16]")[-1].strip()
content = output_sent.split("[unused17]")[-1].split("[unused10]")[0].strip()
print("\nthinking content:", thinking_content)
print("\ncontent:", content)
thinking_content: 提取慢思考模式下的思考内容。content: 提取最终生成的回答。
3. 示例运行
以下是一个完整的运行示例:
cd inference
python generate.py
输出示例
thinking content: 大语言模型是一种基于深度学习的自然语言处理技术...
content: 大语言模型(如 openPangu-Embedded-7B)通过海量数据训练,能够生成连贯、有逻辑的文本...
4. 快慢思考模式切换
通过修改用户输入,可以切换至快思考模式:
messages = [
{"role": "system", "content": sys_prompt},
{"role": "user", "content": no_thinking_prompt}
]
快思考模式下,thinking_content 将为空,模型直接生成最终回答。
5. 流程图
以下为 generate.py 的工作流程:
flowchart TD
A[加载模型和分词器] --> B[处理输入]
B --> C[生成文本]
C --> D[解析输出]
D --> E[打印结果]
通过以上解析,用户可以快速掌握 generate.py 的使用方法,并根据需求调整输入和输出逻辑。
快慢思考模式的切换与应用
openPangu-Embedded-7B 提供了快慢思考模式的切换功能,用户可以根据任务需求灵活选择模式。快思考模式适用于需要快速响应的场景,而慢思考模式则适用于需要深入分析和推理的任务。以下将详细介绍这两种模式的特性、切换方法以及实际应用示例。
快慢思考模式特性对比
| 特性 | 快思考模式 | 慢思考模式 |
|---|---|---|
| 响应速度 | 快速生成结果 | 生成结果较慢,但更深入 |
| 适用场景 | 简单问答、实时交互 | 复杂推理、逻辑分析 |
| 输出内容 | 直接生成答案 | 包含推理过程和中间结果 |
| 标记方式 | 在输入末尾添加 /no_think |
默认模式,无需额外标记 |
模式切换方法
在代码中,可以通过以下方式实现快慢思考模式的切换:
- 快思考模式:在用户输入末尾添加
/no_think标记,此时模型将跳过推理过程,直接生成结果。 - 慢思考模式:默认模式,无需额外操作。
以下是一个代码示例,展示如何在 generate.py 中实现模式切换:
# 快思考模式示例
no_thinking_prompt = prompt + " /no_think"
messages = [
{"role": "system", "content": sys_prompt},
{"role": "user", "content": no_thinking_prompt}
]
# 慢思考模式示例(默认)
messages = [
{"role": "system", "content": sys_prompt},
{"role": "user", "content": prompt}
]
实际应用示例
示例 1:简单问答(快思考模式)
prompt = "What is the capital of France?"
no_thinking_prompt = prompt + " /no_think"
messages = [
{"role": "user", "content": no_thinking_prompt}
]
输出:
content: Paris
示例 2:复杂推理(慢思考模式)
prompt = "Explain the theory of relativity in simple terms."
messages = [
{"role": "user", "content": prompt}
]
输出:
thinking content: The theory of relativity is based on two main principles: the laws of physics are the same for all observers, and the speed of light is constant.
content: In simple terms, relativity explains how time and space are interconnected, and how gravity affects them.
模式选择建议
- 快思考模式:适用于需要快速响应的任务,如实时聊天、简单问答等。
- 慢思考模式:适用于需要深入分析的任务,如逻辑推理、复杂问题解答等。
通过灵活切换快慢思考模式,用户可以充分利用 openPangu-Embedded-7B 的能力,满足不同场景的需求。
openPangu-Embedded-7B是一个功能强大的嵌入式语言模型,支持快慢思考模式切换,适用于多种应用场景。通过本文的指导,您可以顺利完成模型的部署与使用,并根据实际需求灵活调整模式。无论是简单问答还是复杂推理,openPangu-Embedded-7B都能提供高质量的生成结果。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00