Mac安装Mindspore问题记录【docker解决】

"着急的可以不用看前言了,主要步骤在后面"

基本信息

ProductName:    macOS
ProductVersion:    12.6
BuildVersion:    21G115

前言

寒假需要使用mindspore进行一个大作业实践,但是mac版本的没有详细的安装文档,就只能靠广大的csdn和我的新模型:通义千问(用着不错,暂时不翻墙了)。

首先我就是按照官网给的命令嘛,但是就是,emmmm。但是在我这里报错了,我尝试了很多,包括重新下载python,重新配置和升级pip,把路径看了一遍整理了一遍,但还是一直报错。

命令和报错长这样:

xilisilly@192 ~ % sw_vers
ProductName:	macOS
ProductVersion:	12.6
BuildVersion:	21G115
xilisilly@192 ~ % python --version
zsh: command not found: python
xilisilly@192 ~ % python3 --version
Python 3.9.1
xilisilly@192 ~ % python3 -m pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.10/MindSpore/cpu/aarch64/mindspore-2.2.10-cp39-cp39-macosx_11_0_arm64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
ERROR: mindspore-2.2.10-cp39-cp39-macosx_11_0_arm64.whl is not a supported wheel on this platform.
WARNING: You are using pip version 20.2.3; however, version 23.3.2 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m pip install --upgrade pip' command.

 我反复和通义老师确认,老师也没办法说我这个真奇怪,我就只能去官网检查,我猜测是我的mac因为需要已经更新到12.6的版本,但官网最高只适配到11,所以我的就算是环境全都符合了还是弄不了。

所以我只能用另一种方法,docker虚拟机,以前很害怕虚拟机,了解到docker是轻量级的之后我还是打算尝试一下。

docker的三大核心概念是:

1.docker镜像(Image);

2. docker容器(container);

3. docker仓库(repository)。

我是按照这个兄弟的连接进行的,给我了很大帮助和思路,mac的m1芯片大部分用这个应该也没问题:

【mindspore】M1也能玩mindspore_mindspore 如何使用macbook m1-CSDN博客

但是还是不行,我的docker呢会提示说我下载的版本不对啊之类的。然后框架也不对,m1是arm但是默认命令拉取的是amd,而且官网也找不到相关的连接。

勉强能够运行,但是镜像无法运行,强制运行个一秒就不行了,等搞完作业我还得把这些给清理一下。所以就只能靠和千问老师聊天。

m1芯片使用docker

安装docker

参考这一篇:

【mindspore】M1也能玩mindspore_mindspore 如何使用macbook m1-CSDN博客

然后就自行去官网下载适合的安装包:

选择历史版本模块,然后我选择了这个,希望能行。

启动镜像

然后就跟千问老师交流,得到步骤:

您希望在Docker容器中使用已下载的whl文件安装MindSpore。由于macOS版本较高导致无法直接运行,您可以按照以下步骤创建一个包含本地whl包的Docker镜像,并运行它:

  1. 首先,确保已经将mindspore-2.2.10-cp37-cp37m-linux_aarch64.whl文件放在一个方便访问的位置。

  2. 创建一个名为 Dockerfile 的文本文件,在其中编写以下内容(假设whl文件与Dockerfile在同一目录下):

Dockerfile

# 使用基础镜像,这里以Python 3.7为基础镜像示例
FROM python:3.7-slim-buster

# 将本地的whl文件复制到容器内
COPY mindspore-2.2.10-cp37-cp37m-linux_aarch64.whl /tmp/

# 安装必要的依赖库(如果有)
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libssl-dev \
    libffi-dev \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# 安装MindSpore whl包
RUN pip install /tmp/mindspore-2.2.10-cp37-cp37m-linux_aarch64.whl

# 设置工作目录
WORKDIR /workspace

# 启动bash shell以便于交互式操作
CMD ["/bin/bash"]
  1. 在终端中,转到包含Dockerfilemindspore-2.2.10-cp37-cp37m-linux_aarch64.whl文件的目录,然后构建新的Docker镜像:

Bash

docker build -t my_mindspore_arm64 .
  1. 构建完成后,运行这个自定义的Docker容器:

Bash

docker run -it --rm my_mindspore_arm64

这样您就可以在一个基于Linux ARM64架构且包含了MindSpore环境的Docker容器内进行操作了。请注意,根据实际需求,可能需要进一步调整Dockerfile中的指令以满足特定依赖要求。

然后就成了,开了,这个就表示我们进入了。

这里我还遇到另外一个问题,就是镜像我打不开启动后秒关,千问老师说:

在Docker中,镜像是用于创建容器的基础模板。当您使用 docker run 命令时,实际上是基于指定的镜像启动一个新的容器实例。如果您的镜像在运行后立即停止,通常可能有以下几个原因:

  1. 容器没有指定长期运行进程:Docker容器默认会在其主进程退出时停止。例如,如果您从一个仅执行一次性命令(如 echo "Hello World")的镜像启动容器,则容器会在命令执行完毕后自动关闭。

  2. 应用在容器内崩溃或异常退出:如果镜像中的应用程序在启动时遇到错误并退出,容器也会随之停止。

  3. 没有后台服务:对于像Web服务器这样的服务,容器需要运行的服务进程应当是守护进程模式,也就是一直运行直到被手动停止。如果不配置为守护进程模式,容器可能会在执行完启动脚本后停止。

  4. 健康检查失败:如果在Docker Compose文件或Kubernetes等编排工具中设置了容器健康检查,且容器内的应用未通过健康检查,则容器会被终止。

要解决这个问题,请确保镜像内的启动命令可以维持一个持续运行的服务,例如对于一个Web服务器,您可以指定 /bin/bash 或者直接指定服务启动命令,并加上 -d 参数让容器在后台运行:

Bash

docker run -d --name my_container my_image /usr/sbin/apache2ctl -D FOREGROUND  # 对于Apache HTTP Server
docker run -d --name my_container my_image nginx                            # 对于Nginx,它会默认以守护进程模式运行

或者如果是简单的命令,可以使用 tail -f /dev/null 来保持容器运行不退出:

Bash 

docker run -dit --name my_container my_image tail -f /dev/null

后来是解决了的,通过这个命令去监测自己打开了的镜像:

要查看当前正在运行的Docker容器列表,您可以使用以下命令:

Bash

docker ps

该命令会显示所有活动(运行中或暂停)的容器的基本信息,包括容器ID、镜像名称、创建时间、状态和端口映射等。

如果您想要查看所有容器,包括已停止的容器,则可以使用:

Bash
docker ps -a

通过这些命令,您可以监测哪些基于特定镜像的容器正在运行。如果需要查找基于某个具体镜像启动的所有容器,可以在命令后加上 --filter 参数筛选。

Bash

docker ps -a --filter "ancestor=my_mindspore_arm64"

这里的 my_mindspore_arm64 应替换为您关心的镜像名称或ID,这个命令将列出基于指定镜像启动的所有容器,不论它们当前是否在运行。

导入pyharm

在PyCharm中使用已通过Docker安装的MindSpore,请按照以下步骤操作:

  1. 设置Docker容器作为Python解释器

    • 打开PyCharm,进入“Settings”(在Mac上是“Preferences”)。
    • 选择“Project: [Your Project Name]” -> “Project Interpreter”。
    • 点击右边的小齿轮图标,然后选择“Add”或“+”号,接着选择“Docker Compose”或“Existing Docker Container”。

    如果使用的是“Existing Docker Container”:

    • 在新窗口中选择已经创建并安装了MindSpore的容器,通常可以通过容器ID或名称来识别。
    • 确认选定后点击OK。

    如果使用的是“Docker Compose”:

    • 需要有一个包含了启动MindSpore环境的docker-compose.yml文件,并在其中指定相关的服务和环境变量等配置。
    • 导入该docker-compose.yml文件,PyCharm会自动识别包含Python解释器的服务。
  2. 验证MindSpore是否可用

    • 添加完Docker容器为解释器后,在PyCharm中新建或打开一个Python文件,尝试导入MindSpore库进行测试:
       Python 
      import mindspore
      print(mindspore.__version__)
  3. 运行与调试

    • 使用PyCharm中的“Run/Debug Configurations”设置,确保执行配置指向正确的Python interpreter(即之前添加的Docker容器内的Python解释器)。
    • 这样您就可以在PyCharm中编写、运行和调试基于MindSpore的代码,而实际计算将在Docker容器内完成。

请注意,如果您的主机系统和Docker容器内部使用的Python版本不同,或者MindSpore是在容器内全局安装而不是在虚拟环境中安装的,可能需要额外配置以确保正确找到MindSpore库。同时,确保您的项目文件夹被正确挂载到Docker容器内部,以便于访问源代码文件。

 

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值