在Windows下使用wsl2配置sbmc的docker环境

本文最后更新于:2022年10月18日 下午

项目源地址: https://github.com/adobe/sbmc

根据项目 Readme 中的快速开始来配置环境。

开始

这个项目使用 make 来配置 docker,而且只支持 Linux,因此这里使用 wsl 子系统来配置使用。

wsl 需要升级到 wsl2,并且将子系统也升级到 2 版本才可以在子系统中使用 Windows 下安装的 Docker。

升级过程很简单,这里略过。完成后使用wsl -l -v命令可以看到子系统版本为 2,然后就可以在子系统中安装使用 docker 了。

1
2
3
4
  NAME                   STATE           VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2

然后执行三个命令:

1
2
3
make nvidia_docker
make docker_build
make docker_run

make nvidia_docker

这里坑比较少,实际执行的代码如下:

1
2
3
4
5
6
7
# Checks whether docker version supports the --gpus option
check_docker_version:
./scripts/check_docker_version.sh

# Install the required extension for CUDA on Docker
nvidia_docker: check_docker_version
./scripts/install_nvidia_docker.sh

如果版本检查卡住了,可以简单粗暴的跳过去,直接执行./scripts/install_nvidia_docker.sh,也可以达到目的。

make docker_build

这一步执行的操作为:

1
2
3
4
# To facilitate environment setup, build and use this dockerfile
# !! Requires NVIDIA's docker extension !!
docker_build:
@docker build -f dockerfiles/cuda-sbmc.dockerfile -t sbmc_cuda .

在 dockerfile 中有一处问题,在 81 行

1
patch -d 2015_kalantari_lbf -p1 -i /sbmc_app/patches/2015_kalantari_lbf.diff  && \\

最后的斜杠多了一个,删去一个即可。

在安装pytorch的时候国内网络可能会非常慢,于是需要换源。

1
RUN conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c torch

之前加上换源命令:

1
2
3
4
5
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
RUN conda config --set show_channel_urls yes

同时将 conda 命令-c 后面的部分去掉,使之可以从清华源下载。

1
RUN conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0

过了这一劫之后,我又卡在了

1
RUN cd sbmc && python setup.py develop

这里直接去换源比较复杂,查阅源代码之后发现,需要安装torch-tools==0.0.36 bridson pandas pyexr scikit-image lz4 wget torch==1.2.0这几个包。找了一些换源的方法都失败了,源站点下了十几次都失败了。于是转变思路,与其去很麻烦的换源,不如帮他把包下了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Build the Python extension module
packages = ["sbmc", "sbmc.scene_generator"]
setuptools.setup(
name="sbmc",
verbose=True,
url="",
author_email="[email protected]",
author="Michaël Gharbi",
version=__version__,
packages=packages,
ext_modules=[extension],
install_requires=["torch-tools==0.0.36", "bridson", "pandas", "pyexr",
"scikit-image", "lz4", "wget", "torch==1.2.0"],
cmdclass=dict(build_ext=hlpt.HalideBuildExtension),
)

于是在# Install our code前面加上:

1
RUN pip install -i https://mirrors.aliyun.com/pypi/simple/  torch-tools==0.0.36 bridson pandas pyexr scikit-image lz4 wget torch==1.2.0

手动指定源来下载,果不其然,执行到下载时检测到需要的包已经安装,就不在下载了,国内源的速度也很给力。

这之后执行make docker_run即可,没遇到问题,make test检测也全部通过了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!