华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录

本文介绍了如何在昇腾设备上编译安装Paddle和迁移PyTorch代码,包括设置环境变量、导入库以及处理缺失OpenGL、ModuleNotFoundError和内存分配错误的方法。着重讲解了TLS和LD_PRELOAD在解决特定错误中的作用。
摘要由CSDN通过智能技术生成
1.编译安装paddle

参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md

2.安装pytorch
pip install torch==2.1.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyyaml setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch-npu==2.1.0rc1 -i https://pypi.tuna.tsinghua.edu.cn/simple
3.训练代码torch迁移到torch_npu

官方参考文档:昇腾社区-官网丨昇腾万里 让智能无所不及

(1)配置环境变量
export PYTHONPATH={CANN包安装目录}/ascend-toolkit/latest/tools/ms_fmk_transplt/torch_npu_bridge:$PYTHONPATH
 (2)在训练脚本中导入以下库代码
import torch
import torch_npu
.....
import transfer_to_npu # 报错的话改写为from torch_npu.contrib import transfer_to_npu
(3)指定使用npu进行训练
torch_npu.npu.set_device("npu:3") 
4.可能会出现的报错问题:
(1)缺少openGL会报错

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解决方法:

yum install mesa-libGL.aarch64
(2)报错ModuleNotFoundError: No module named 'transfer to npu!

解决方法:改为下面的import方式:

from torch_npu.contrib import transfer_to_npu
 (3)报错libgomp-d22c30c5.so.1.0.0:cannot allocate memory in static TLS block

解决方法:

TLS的全称是:Thread Local Storage。同一个进程中的所有线程共享同一个地址空间,进程中定义的全局变量和静态变量能够被所有线程访问。但多个线程同时访问一个数据的时候,容易产生冲突。针对这一问题,TLS机制可以将数据和特定线程联系起来,TLS在各线程中有独立的数据存储空间,声明的TLS变量在每个线程中都有一个副本。这样,多线程可以做到对数据的同时访问而不互相影响。

libgomp这个问题是Arm平台arrch64位操作系统上的一个bug,目前绝大部分推荐的解决方法都是,将libgomp所在的路径通过LD_PRELOAD设置预加载,添加到环境变量中。

方法是下面的添加环境变量。

export LD_PRELOAD=/root/software/enter/envs/py39/lib/python3.9/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0:$LD_PRELOAD

前提需要找到该文件的位置,可以用find命令找到文件位置,然后用上面的export。

find / -name libgomp-d22c30c5.so.1.0.0

/root/software/enter/envs/py39/lib/python3.9/site-packages/scikit_learn.libs/libgomp-d22c30c5.so.1.0.0

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在华为NPU安装conda,可以按照以下步骤进行操作: 1. 首先,连接到华为提供的NPU服务器,例如使用Xshell或其他远程连接工具。 2. 登录服务器后,创建自己的文件夹,用于安装和管理conda环境。 3. 接下来,复制一份pt-1.5的conda环境,可以使用命令`conda create -n your_env_name --clone pt-1.5`,这将创建一个与pt-1.5环境相同的新环境。 4. 安装所需的包,可以使用命令`conda activate your_env_name`激活新环境,然后使用`conda install package_name`安装需要的包。 5. 在设置好环境安装完所需的包后,可以运行自己的程序。确保先激活自己的conda环境,使用命令`source env_npu.sh`,然后运行你的代码。 6. 另外,建议使用nohup命令后台运行代码,以确保代码可以持续运行。可以使用`nohup python your_code.py &`命令来运行代码。 7. 在运行代码后,可能会生成许多日志文件。为了方便访问和修改,建议将运行代码的sh脚本文件放在单独的文件夹,这样在使用WinSCP等工具进行访问时会更加方便。 这是一个大致的步骤,你可以根据具体情况适当调整。通过这些步骤,你可以在华为NPU上成功安装conda并运行代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [华为Ascend众智计划项目--3DMPPE_ROOTNET--Pytorch模型迁移NPU(三)](https://blog.csdn.net/KingGugu/article/details/120738467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值