昇腾平台LLM pytorch推理环境搭建

本文介绍如何在昇腾平台上搭建针对LLM模型的PyTorch推理环境,包括基础环境配置、PyTorch及依赖安装步骤,并提供验证方法及示例代码。

【昇腾】LLM pytorch推理环境搭建

1.基础环境准备

资源下载地址:https://www.hiascend.com/developer/download
需要下载:
驱动
固件
cann
pytorch
pytorch_npu

python和pytorch的对应关系

PyTorch版本 Python版本
PyTorch1.11.0 Python3.7.x(>=3.7.5), Python3.8.x, Python3.9.x, Python3.10.x
PyTorch2.0.1 Python3.8.x, Python3.9.x, Python3.10.x
PyTorch2.1.0 Python3.8.x, Python3.9.x, Python3.10.x

检查NPU是否正常在位可执行lspci | grep d802命令,如果服务器上有 N路NPU,回显N行含“d802”字段,则表示NPU正常在位。

1.1 驱动安装
sh Ascend-hdk-910b-npu-driver_23.0.rc3_linux-aarch64.run --full --install-for-all
sh Ascend-hdk-910b-npu-firmware_6.4.0.4.220.run

通过执行npu-smi info命令查看

1.2 cann安装
sh Ascend-cann-nnrt_7.0.RC1_linux-aarch64.run

安装成功确认
cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend-toolkit_install.info

2. 安装pytorch

2.1 安装pytorch

aarch64:

pip install torch==2.1.0

2.2 安装依赖
pip3 install pyyaml
pip3 install setuptools
2.3 安装pytorch-npu
pip3 install torch-npu==2.1.0rc1

3.验证

3.1 设置环境变量
# Default path, change it if needed.
source /usr/local/Ascend/ascend-toolkit/set_env.sh

查看状态

python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"
#如果为false,则需要进行迁移

#自动映射cuda API到npu的代码
from torch_npu.contrib import transfer_to_npu
print(torch_npu.npu.is_available())
print(torch_npu.cuda.is_available())

#True
#True

3.2 代码验证
import torch
import torch_npu

x 
### 如何使用 PyTorch 构建大型语言模型 (LLM) 构建一个具有百万参数的大规模语言模型是一项复杂的任务,涉及多个阶段的设计与实现。以下是关于如何利用 PyTorch 来完成这一目标的关键要点。 #### 安装依赖项 为了开始构建 LLM,首先需要安装必要的库工具链。可以通过 `pip` 命令来安装所需的包[^2]: ```bash pip install torch torchvision torchaudio pip install --extra-index-url https://download.pytorch.org/whl/test/cu118 llama-recipes ``` 这些命令会帮助设置环境并引入支持大规模训练的基础组件。 #### 数据准备 数据集的选择对于任何机器学习项目都至关重要。在构建 LLM 的过程中,通常会选择大量文本语料作为输入源。常见的做法是从公开可用的数据集中提取信息,比如 Wikipedia 或 Common Crawl。预处理步骤可能包括但不限于分词、清洗以及转换成适合神经网络消费的形式[^1]。 #### 模型架构设计 现代 LLM 大多基于 Transformer 结构,这种结构能够有效捕捉序列中的长期依赖关系。具体来说: - **编码器解码器模式**: 如果计划开发双向理解能力,则可以考虑采用标准的 Encoder-Decoder 配置。 - **仅解码器变体**: 对于生成式应用而言,“decoder-only”版本更为常见,因为它允许更高效的前向传播计算路径。 这里提供了一个简单的单层 transformer 实现框架供参考: ```python import torch.nn as nn class SimpleTransformer(nn.Module): def __init__(self, vocab_size, d_model=512, nhead=8, num_layers=6): super(SimpleTransformer, self).__init__() self.embedding = nn.Embedding(vocab_size, d_model) self.transformer = nn.Transformer(d_model=d_model, nhead=nhead, num_encoder_layers=num_layers, num_decoder_layers=num_layers) def forward(self, src, tgt): embedded_src = self.embedding(src) embedded_tgt = self.embedding(tgt) output = self.transformer(embedded_src.permute(1,0), embedded_tgt.permute(1,0)) return output.permute(1,0) ``` 此代码片段定义了一种基础形式的变压器类,其中包含了嵌入层核心变换操作部分。 #### 训练过程管理 一旦完成了上述准备工作之后就可以着手进行实际训练环节了。这一步骤涉及到损失函数设定、优化算法挑选等方面的内容。例如,在很多情况下人们倾向于选用交叉熵作为衡量预测效果好坏的标准;而 AdamW 则是一种广泛应用于深度学习领域内的自适应梯度下降方法之一。 另外值得注意的是,在面对超大尺寸模型的时候还需要特别关注内存分配策略等问题——通过调整 batch size 参数大小或者启用 gradient checkpointing 技术等方式可以在一定程度上缓解显存压力。 #### 测试评估性能表现 最后当整个流程结束以后应当针对测试集合执行推理动作进而获取最终成果展示出来给用户看。同时也可以借助一些指标如 perplexity 等进一步量化分析所得结果的质量水平。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值