跨模态神经搜索实践 环境准备
本文基于WSL2及docker进行环境搭建
1. 安装和配置WSL2 Ubuntu发行版
1.1 安装WSL2 Ubuntu
相关安装命令:
wsl --install
:默认安装Ubuntu发行版wsl --list --online
:查看可支持的发行版本wsl --install -d <Distribution Name>
:自定义安装想要的版本wsl --unregister <Distribution Name>
:注销或卸载指定Linux发行版wsl --setdefault <Distribution Name>
:设置默认启动和安装的发行版
其它WSL命令参考链接
补充:如果觉得命令麻烦,可以在Microsoft Store中搜索Ubuntu安装WSL2 Ubuntu
笔者踩坑:笔者在使用命令行安装Ubuntu时,发现没法打开,即使重启多次仍然无用,在使用Microsoft Store安装Ubuntu时,出现错误,在启用或关闭Windows功能
中重新安装适用于Linux的Windows子系统
1.2 设置Linux用户信息
在开始菜单中打开安装的发行版(笔者这里是Ubuntu),第一次打开需要设置相关用户名和密码即可。
如果忘记密码,可以使用wsl -d ubuntu -u root进行指定发行版,使用passwd <用户名>
即可修改密码。
这里还可以设置发行版的wsl版本,通过wsl --set-version <Distribution Name> <version_number>
设置
1.3 更换国内源
- 备份源文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 修改源文件:
sudo vi /etc/apt/sources.list
,删除原文件内容,可以直接输入49dd
- 修改为国内源:内容如下
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
- 换源:
sudo apt-get -y update && sudo apt-get -y upgrade
2. 配置VSCode和WSL2
在VSCode中安装WSL2的扩展,笔者选择的是WSL,而非官网中推荐的Remote Development。
安装好后,即可在WSL2 Ubuntu中输入code .
命令,使用用本机上的VSCode打开WSL2中当前文件夹。
这里需要注意,如果需要支持代码智能提示、自动编译等功能,需要在每个WSL2中安装对应的插件,但是如VSCode的主题,只需要在本机上的VSCode上安装插件即可。
也就是说,VSCode将本地和远程(WSL2)上的插件分开,需要按需进行安装,如下图:
3. 配置WSL2和Docker容器
在WSL2中安装Docker有两种方式:
- 基于Windows下的Docker Desktop安装:官方使用的方式,详见链接
- 基于原生Linux安装:不推荐,笔者尝试失败,笔者参考链接
3.1 基于原生Linux安装(失败)
这里笔者因为不想在Windows本机上安装Docker,选择第二种方式
- 安装daemonize
sudo apt install daemonize
sudo apt install -yqq fontconfig daemonize
- 创建一个脚本:
sudo vim /etc/profile.d/00-wsl2-systemd.sh
# Create the starting script for SystemDvi /etc/profile.d/00-wsl2-systemd.sh
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi
- 安装依赖:
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
- 添加docker官方密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 添加docker镜像地址:
### 添加 Docker apt 仓库
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
- 安装docker:
sudo apt-get update && sudo apt-get install containerd.io docker-ce docker-ce-cli -y
- 配置docker:
sudo mkdir /etc/docker && vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/", "https://hub-mirror.c.163.com/", "https://reg-mirror.qiniu.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
- 启动docker:
sudo mkdir -p /etc/systemd/system/docker.service.d
3.2 基于Docker Desktop安装
从官网下载docker desktop即可,安装时勾选WSL2即可在WSL2中使用docker
4. 环境准备
4.1 基于docker-compose
这里可以直接基于docker-compose启动项目,这里配置的docker国内镜像源如下:
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://hub-mirror.c.163.com/",
"https://reg-mirror.qiniu.com"
]
在Docker Desktop中修改镜像源的方式如下图:
构建项目:docker-compose build
启动项目:docker-compose up -d
4.2 基于源代码构建
为了方便管理多个python版本,这里在WSL2中基于miniconda构建整个项目
- 安装miniconda,安装完成后,需要重启终端
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
- 新建虚拟环境:
conda create --name vced python=3.9 -y
- 启动虚拟环境:
conda activate vced
- 安装依赖:
sudo apt install rustc ffmpeg -y
- 安装clip:
pip install git+https://github.com/openai/CLIP.git
4.2.1 启动server
cd code/service
pip install -r requirements.txt
python app.py
4.2.2 启动web
cd code/web
pip install -r requirements.txt
streamlit run app.py
访问localhost:8501即可,最终效果如下图:
5. Docker Desktop数据迁移
5.1 修改安装路径
Docker Desktop默认安装到C盘,且无法在安装时自定义安装路径,因此这里讲述如何迁移Docker Desktop,这里为了避免意外,选择重装Docker Desktop,当然,参考链接给了不重装修改路径的方式,笔者未尝试。
注:这里只参考了链接中修改安装路径的步骤,其中修改镜像路径的方式是另外的步骤。
在安装之前,首先需要创建Docker Desktop即将安装的实际路径,如D:/Program Files/Docker
,然后执行如下命令(注意在命令行中以管理员方式启动):
mklink /j "C:\Program Files\Docker" "D:\Program Files\Docker"
然后正常安装Docker Desktop即可。
5.2 修改镜像路径
这里Docker是以WSL2的形式出现的,其中包括两个部分,分别是:
- docker-desktop:一般占用不会变化太大
- docker-desktop-data:主要存储镜像文件,占用空间会较大
因此笔者只迁移了docker-desktop-data,如需迁移docker-desktop,操作步骤同docker-desktop-data,具体如下:
- 关闭wsl2:wsl --shutdown
- 查看wsl发行版:wsl --list -v,需要确保它们的STATE为Stopped,如下图:
- 备份docker-desktop-data数据:
wsl --export docker-desktop-data "D:\Program Files\Docker\docker-desktop-data.tar"
- 注销docker-desktop-data:
wsl --unregister docker-desktop-data
- 重新导入docker-desktop-data:
wsl --import docker-desktop-data "D:\Program Files\Docker\data" D:\Program Files\Docker\docker-desktop-data.tar --version 2
重新运行Docker Desktop,确保无误即可删除备份文件
References
- WSL 安装
- WSL安装及换源
- WSL原生安装Docker
- VCED项目启动
- Docker Desktop切换安装路径
- Docker Desktop镜像切换路径