需要在离线win10-20H2版本系统部署heygem.ai数字人,正常流程走到执行docker-composed up时,会报错显示容器内无法使用GPU,猜测是因为旧版本dockerdesktop对于容器内gpu使用相关功能集成不完善,而20H2版本无法安装较新版本dockerdesktop,于是只有两条路可以走:

  1. 更新新版本win,安装最新版dockerdesktop。

  2. 停用dockerdesktop,wsl2手动安装ubuntu分发版并部署docker。

笔者选择第二条路,其思路在于,wsl2内安装好docker、nvidiacontainertoolkit并配置好runtime、宿主机内安装好cudatoolkit和nvidia最新驱动,可以实现容器内gpu使用。

实现步骤如下:

一、尝试下载distro

一种思路是,下载distro安装包先安装在离线电脑上,再逐个通过物理介质导入进行包的安装,然而此方法实现起来极其不方便,这是因为离线电脑安装极有可能遇上缺少依赖的情况,此时因为没有网络,只能再次在互联网上寻找安装包后手动安装,过程费时费力!所以,我们换一种思路,在一台系统差别不大的互联网电脑上,安装ubuntu分发版并配置好所有需要的组件后整体导出,再导入离线电脑导入并使用,实践证明效果拔群!用到的指令如下:

1. 导出导入

(FileName为ext4.vhdx路径,通过微软appstore安装的distro,其路径为:C:\\Users\\Lenovo\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\\LocalState

wsl --export <DistroName> <FileName>
wsl --import-in-place <DistroName> <FileName>

2. 查看所有当前已经导入的distro

wsl --list --verbose

3. 删除distro

wsl --unregister <DistroName>

4. 启动distro

wsl -d <DistroName>

二、distro中成功导入image后

此时还不具备docker-composed up条件,有以下几个方面问题:

1. yml文件中卷路径修改

原配置:

volumes:
  - d:/heygem_data/face2face:/code/data

其中d盘无法在distro内直接识别到,需要加上挂载头,即:

volumes:
  - /mnt/d/heygem_data/face2face:/code/data

注意:face2face这个路径是不能修改的!因为前后端都通过此路径实现数据交互。

2. 端口转发配置

端口转发需手动配置,直接访问127.0.0.1:8383是不行的,不过distro内执行:

hostname -I

此命令返回(记为<WSL-IP>)第一个地址加上端口号可以正常与后端交互,于是需要进行端口转发,管理员权限:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8383 connectaddress=<WSL-IP> connectport=8383

此后即可通过127.0.0.1:8383访问后端。


总结

新版本dockerdesktop确实极大地减少了繁琐的人工操作,将其更新至最新版能避免大多数问题。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐