在ARM架构下,由于Anaconda并没有为ARM架构提供官方版本,直接在ARM系统中安装Anaconda可能会引发一系列兼容性问题或未知错误。这些问题往往源于ARM架构与x86架构在指令集、系统调用等方面的差异,导致一些为x86架构优化的软件在ARM上运行时出现问题。
相比之下,Miniconda作为Anaconda的精简版本,成为了一个更为合适的选择。Miniconda只包含了conda包管理器和最基本的库,因此它的体积相对较小,对系统资源的占用也更低。这使得Miniconda在资源受限的环境下,如ARM设备或某些服务器(如华为的HPC集群节点)上,能够更加高效地运行。
在安装前需要查看本机的系统架构,确认机器为ARM架构,输入指令:uname -m
,如果返回结果为aarch64:
aarch64表示系统的 CPU 架构是 ARM 64 位架构(ARMv8-a),表明本机无法使用传统的 x86 架构的软件,所以建议不安装Anaconda,而是Miniconda。
进入Miniconda下载官网:https://conda.io/en/latest/miniconda.html 可以看到Miniconda为我们提供了多种配置的安装包,包括Windows、macOS的x86,M1芯片,Linux的aarch64、ppc64le、s390x等多种架构。
根据机器的架构,点击对应的安装包进行下载,下载后是一个Miniconda3-latest-Linux-aarch64.sh文件,放置到服务器上。
cd到对应目录,bash启动刚刚的sh文件,这里使用终端输入:bash Miniconda3-latest-Linux-aarch64.sh
进入安装程序后,会返回用户协议,一直enter到最后,输入yes同意协议:
然后会弹出一个询问您是否希望更新您的shell配置文件(例如.bashrc或.zshrc),以便在启动时自动激活Conda环境,并在激活时更改命令提示符
如果您选择“yes”,则Conda将被初始化为在每次启动时都自动激活基础环境(默认情况下为“base”环境),并且在激活时会显示Conda环境的名称。 如果您选择“no”,则不会在启动时自动激活基础环境,您可以在需要时手动使用conda activate 激活环境。
这里可以随意选择,我这里选择yes,然后应该就安装成功了!
【重要】:安装成功后,需要重启终端,重新进入才能正式使用conda,验证conda是否安装成功可以使用conda --version命令,输出版本号即为成功:
输出nvida-smi查看本机CUDA版本这里是12.3
所以必须要找一个基本架构类似的新机器安装ARM和CUDA12.3下的环境; 要注意的是,ARM架构下的PyTorch安装比较麻烦,目前提供的镜像源均为cpu版本,得通过编译安装才能安装GPU版本
安装好后对虚拟环境使用进行conda-pack 进行conda 环境打包,conda-pack可以将conda环境打包成一个tar文件,其中包含了环境中使用的所有库和依赖项。这个tar文件可以被部署到其他机器上,并且能够轻松地安装整个环境,无需重新安装每个库和依赖项。
打包好后会得到一个 xx.tar.gz的文件,将该.tar.gz压缩包通过mobaxterm或者其他方式把 xx.tar.gz上传到目标服务器的miniconda里的envs/环境名目录里面,一般路径为用户名/miniconda3/envs/自己新建的环境名
上传成功后,在目标服务器(离线的那个)上解压压缩包:tar -xzf xx.tar.gz
,解压成功后,在目标服务器上查看虚拟环境:conda info --envs
,显示如下,即表示迁移成功了。
在跑程序的时候如果出现:cannot execute binary file: Exec format error这种错误,说明你正在尝试运行一个不同体系结构的可执行文件,或者文件本身可能已经损坏。极有可能的问题原因就是:你正在ARM架构下运行x86架构的编译!一个为x86架构编译的二进制文件无法在ARM架构的系统上执行,反之亦然。这种架构不匹配是导致“Exec format error”的常见原因。
这说明你的虚拟环境还是不太对,所有环境一定要是ARM架构下的才行,特别是PyTorch系列产品,要安装对应架构的才能避免这个报错。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。