news 2026/7/12 6:23:13

在openEuler 22.03上,用conda搞定昇腾910B的PyTorch 2.1.0环境(附依赖包清单)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在openEuler 22.03上,用conda搞定昇腾910B的PyTorch 2.1.0环境(附依赖包清单)

在openEuler 22.03上构建昇腾910B的PyTorch 2.1.0开发环境全指南

国产操作系统与AI硬件的深度融合正成为技术自主化的重要趋势。本文将手把手带你完成openEuler 22.03系统下,基于conda环境管理工具搭建支持昇腾910B NPU加速的PyTorch 2.1.0开发环境。不同于通用Linux发行版,openEuler作为华为主导的企业级操作系统,其软件源和依赖关系具有独特性,需要特别注意系统级库的兼容性问题。

1. 环境准备与基础配置

1.1 系统环境检查

在开始前,请确保你的openEuler 22.03系统已完成基础更新:

sudo dnf update -y && sudo dnf install -y git wget make cmake gcc-c++

验证NPU驱动状态(需root权限执行):

npu-smi info

正常输出应显示类似如下信息:

+----------------------------------------------------------------------------------------+ | npu-smi 22.0.0 Version: 22.0.0 | |---------------------------+-------------------------------+---------------------------| | NPU Name | Health | Power(W) Temp(C) | | Chip | Bus-Id | AICore(%) Memory- | | | | Usage(MB)| +===========================+===============================+===========================+ | 0 910B | OK | 15.8 45 | | 0 | 0000:82:00.0 | 0 0/32768 | +===========================+===============================+===========================+

1.2 Conda环境部署

推荐使用Miniconda进行环境隔离:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh -b -p $HOME/miniconda source $HOME/miniconda/bin/activate

创建专属Python环境:

conda create -n torch21 python=3.9 -y conda activate torch21

2. 关键依赖安装与配置

2.1 基础依赖包安装

openEuler的特殊性要求我们特别注意以下依赖的版本匹配:

pip install --upgrade pip wheel setuptools pip install \ numpy==1.24.0 \ protobuf==3.20.0 \ pyyaml==6.0 \ cffi==1.15.1 \ sympy==1.11.1 \ absl-py==1.4.0 \ typing-extensions==4.5.0

注意:protobuf 3.20.0是昇腾工具链的硬性要求,其他版本可能导致兼容性问题

2.2 系统级依赖处理

openEuler的软件源需要额外安装这些系统包:

sudo dnf install -y \ lapack-devel \ openblas-devel \ sqlite-devel \ libffi-devel \ openssl-devel

3. PyTorch与NPU插件安装

3.1 PyTorch本体安装

针对aarch64架构的特定版本:

wget https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu.cp39-cp39-linux_aarch64.whl pip install torch-2.1.0+cpu.cp39-cp39-linux_aarch64.whl

验证基础功能:

import torch print(torch.__version__) # 应输出2.1.0+cpu print(torch.cuda.is_available()) # 在非NVIDIA环境应返回False

3.2 torch_npu插件部署

首先确认CANN工具包版本(假设为8.0.RC3):

export CANN_VERSION=8.0.RC3 wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Milan-ASL/PyTorch/6.0.RC3.beta1/torch_npu-2.1.0.post1-cp39-cp39-linux_aarch64.whl pip install torch_npu-2.1.0.post1-cp39-cp39-linux_aarch64.whl

配置环境变量(建议写入~/.bashrc):

export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/driver/lib64/stub:$LD_LIBRARY_PATH export ASCEND_AICPU_PATH=/usr/local/Ascend/ascend-toolkit/latest export ASCEND_OPP_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp export PATH=/usr/local/Ascend/ascend-toolkit/latest/bin:/usr/local/Ascend/ascend-toolkit/latest/compiler/ccec_compiler/bin:$PATH export PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:/usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe:$PYTHONPATH export ASCEND_SLOG_PRINT_TO_STDOUT=1 export TBE_IMPL_PATH=/usr/local/Ascend/ascend-toolkit/latest/opp/op_impl/built-in/ai_core/tbe

4. 环境验证与性能测试

4.1 基础功能测试

创建测试脚本npu_test.py:

import torch import torch_npu # 检查NPU可用性 print(f"NPU available: {torch_npu.npu.is_available()}") print(f"NPU device count: {torch_npu.npu.device_count()}") # 基础张量运算 x = torch.randn(2, 3).npu() y = torch.randn(2, 3).npu() z = x + y print(z.cpu()) # 模型测试 model = torch.nn.Linear(10, 10).npu() input_data = torch.randn(5, 10).npu() output = model(input_data) print(output.shape)

执行结果应显示:

NPU available: True NPU device count: 1 tensor([[ 0.1234, -0.5678, 1.2345], [-0.9876, 0.5432, -1.1111]]) torch.Size([5, 10])

4.2 性能对比基准

使用ResNet50进行推理速度测试:

import time from torchvision.models import resnet50 model = resnet50(num_classes=1000).npu() model.eval() dummy_input = torch.randn(1, 3, 224, 224).npu() # 预热 for _ in range(10): _ = model(dummy_input) # 正式测试 start = time.time() for _ in range(100): _ = model(dummy_input) elapsed = time.time() - start print(f"Average inference time: {elapsed/100*1000:.2f}ms")

在昇腾910B上的典型表现应该比同环境下纯CPU推理快8-12倍。

5. 常见问题排查

5.1 典型错误解决方案

问题1:ImportError: libascend_hal.so: cannot open shared object file

解决方案:

sudo ldconfig /usr/local/Ascend/driver/lib64

问题2:NPU设备未识别

检查步骤:

  1. 确认驱动安装:
    npu-smi info
  2. 验证用户组权限:
    groups | grep HwHiAiUser
    若无输出,需添加用户组:
    sudo usermod -aG HwHiAiUser $USER

5.2 性能优化建议

  1. 启用自动混合精度:

    from torch_npu.contrib import amp model, optimizer = amp.initialize(model, optimizer, opt_level="O2")
  2. 调整内存分配策略(在代码开头添加):

    torch_npu.npu.set_allocator_settings('garbage_collection_threshold:0.8')
  3. 使用NPU专属优化器:

    optimizer = torch_npu.optim.NpuFusedAdam(model.parameters())

6. 开发环境维护

6.1 依赖包完整清单

通过以下命令导出环境配置:

conda list --export > requirements.txt pip freeze > pip_requirements.txt

典型环境包含以下关键包:

numpy==1.24.0 protobuf==3.20.0 torch==2.1.0+cpu torch_npu==2.1.0.post1

6.2 环境迁移方案

对于团队协作场景,建议:

  1. 使用Docker镜像:

    FROM openeuler/openeuler:22.03 RUN dnf install -y python39 conda COPY environment.yml . RUN conda env create -f environment.yml
  2. 通过conda-pack打包:

    conda pack -n torch21 -o torch21_env.tar.gz
  3. 在其他机器恢复:

    mkdir -p ~/envs/torch21 tar -xzf torch21_env.tar.gz -C ~/envs/torch21 source ~/envs/torch21/bin/activate

在实际项目部署中,我发现合理设置LD_LIBRARY_PATH能解决90%的动态库加载问题。特别是在容器化部署时,需要确保容器内的库路径与宿主机保持同步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/12 6:20:39

从PointNet到PCL:我是如何用VS2019在Win10上搭建第一个点云可视化Demo的

从PointNet到PCL:我是如何用VS2019在Win10上搭建第一个点云可视化Demo的 第一次读到PointNet论文时,那些在三维空间中跳动的点云数据让我着迷。但论文中的可视化效果似乎依赖于专业CAD软件,而我更想用代码直接操控这些空间点阵。经过一番探索…

作者头像 李华
网站建设 2026/3/23 11:27:46

苹果CMS网站被黑?3步搞定防劫持(附护卫神.防入侵系统配置)

苹果CMS网站安全加固实战:从应急响应到长效防护 凌晨三点,手机突然响起刺耳的警报声——这是监控系统在提醒网站出现异常流量。打开电脑查看,发现用户投诉页面被跳转到博彩网站。作为使用苹果CMS的中小站长,这种"午夜惊魂&qu…

作者头像 李华
网站建设 2026/3/23 11:26:43

用QT6打包跨平台串口工具:Windows/Linux一键发布指南

QT6跨平台串口工具打包实战:从开发到分发的全流程指南 1. 跨平台打包前的准备工作 在QT6中开发跨平台串口应用时,打包部署环节往往比编码本身更具挑战性。一个专业的打包流程需要考虑以下核心要素: 构建系统选择:QT6同时支持qmake…

作者头像 李华
网站建设 2026/3/23 11:24:47

OpenClaw语音交互方案:GLM-4.7-Flash对接Whisper实现语音指令控制

OpenClaw语音交互方案:GLM-4.7-Flash对接Whisper实现语音指令控制 1. 为什么需要本地化语音助手? 上周整理电脑文件时,我对着屏幕说了句"把上周的会议录音转成文字",结果发现手机上的语音助手根本无法访问本地文件。这…

作者头像 李华
网站建设 2026/3/23 11:22:34

基于python+flask的体育器材销售商城与分析系统

目录需求分析与功能规划技术选型与架构设计数据库设计关键功能实现步骤测试与部署项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与功能规划 用户端功能 注册与登录:用户可通过邮箱或手机号注册&#xff0…

作者头像 李华