Docker安装mamba环境配置记录
参考博主帖子Mamba安装causal-conv1d安装无误,但是在最后一步mamba安装报错Building wheel for error error
尝试各种方法无解,故采用docker安装
安装windows dockerdesktop后,shell里依次运行
docker --version
/*检查是否安装成功*/
docker pull kom4cr0/cuda11.7-pytorch1.13-mamba1.1.1:1.1.1
/*拉取镜像*/
docker run -it --entrypoint /bin/bash kom4cr0/cuda11.7-pytorch1.13-mamba1.1.1:1.1.1
/*run容器(无gpu版本试水)*/
docker创建容器速度慢
原因:DNS连接不上,导致容器无法run
解决方案:将Docker Engine修改后apply&restart
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"dns": [
"8.8.8.8",
"8.8.4.4"
],
"experimental": false,
"registry-mirrors": [
"https://npavxk2j.mirror.aliyuncs.com"
]
}
docker容器中不能识别GPU驱动
WARNING: The NVIDIA Driver was not detected. GPU functionality will not be available. Use the NVIDIA Container Toolkit to start this container with GPU support; see https://docs.nvidia.com/datacenter/cloud-native/
原因:由于 Docker 容器无法检测到 NVIDIA 驱动程序。为了在 Docker 中启用 GPU 功能,需要确保正确安装和配置 NVIDIA 驱动程序以及 NVIDIA Container Toolkit。
解决方案:
- 检查是否已正确安装 NVIDIA 驱动程序。如果输出显示 NVIDIA GPU 的信息,则说明驱动程序已正确安装。如果未安装或无法识别,需要参考官网安装驱动。
wsl -d Ubuntu-22.04
nvidia-smi
- 依次执行配置指令,安装 NVIDIA Container Toolkit。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
- 配置 Docker 以支持 NVIDIA Container Toolkit
sudo nvidia-ctk runtime configure
- 如果报错
unable to flush config: unable to open
则手动创建该文件并配置 Docker,使用 sudo 创建并写入文件
sudo mkdir -p /etc/docker
- 创建并写入 daemon.json 文件
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
- 然后重启 Docker 服务
sudo systemctl restart docker
- 验证 NVIDIA Container Toolkit 配置,如果没pull的话可以先在官网[docker镜像库cuda]查找合适版本,我这里是
docker pull nvidia/cuda:11.7.1-base-ubuntu20.04
- 拉取镜像完成后,测试 NVIDIA GPU 配置:
docker run --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi
- 打印成功再运行容器
docker run --gpus all -it --name test3 --rm kom4cr0/cuda11.7-pytorch1.13-mamba1.1.1:1.1.1
接着会报错如下:
docker创建容器时使用–gpus all报错解决
docker: Error response from daemon: failed to create task for container: nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/9066e7c8619926b91d714fb77242abd95d695e7cbe8768077fca02899b9d40b9/merged/usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1: file exists: unknown.
原因:本地有这个文件,同时镜像里面也有此文件,所以需要把镜像里面的这个文件删掉。
解决方案:直接删除是不行的,需要创建一个新镜像拷贝原镜像
- 创建 Dockerfile文件内输入:
FROM kom4cr0/cuda11.7-pytorch1.13-mamba1.1.1:1.1.1
RUN rm -rf /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 /usr/lib/x86_64-linux-gnu/libcuda.so.1
- 构建 Docker 镜像:
docker build -t my_custom_image .
- 运行 Docker 容器:
docker run --gpus all -it --name test --rm my_custom_image
镜像中python需重定向
ln -s /usr/bin/python3.8 /usr/bin/python
//验证
python
from mamba_ssm import Mamba
总结:
踩坑无数总结出的经验,希望对后来者有帮助