CVAT 使用(4) 安裝採坑

清歡守護者發表於2020-12-06

0. 前言

  • 安裝過程比較痛苦。之前是一個同事安裝的,裝了一週都還有各種各樣的問題……
  • 安裝失敗的主要原因有:
    • 最主要的原因——網速不行
    • 出現問題進行定位的時候,由於對Docker和Nodejs不瞭解,所以走了不少彎路。
  • 自己的安裝歷程
    • 在公司伺服器 Ubuntu 16.04 Server 上通過VPN代理下載各種包,成功搞定v1.1.0。
    • 在家中電腦 Ubuntu 16.04 Desktop 上嘗試安裝失敗(現在安裝v1.2.0-alpha應該沒問題了,安裝v1.1.0估計還有問題,原因後面再說)。
    • 在阿里雲上租用伺服器 Ubuntu 18.04 Server 成功安裝v1.1.0/v1.2.0-alpha/develop。
  • 為了方便自己和他人,我把修改後的cvat原始碼傳到了gitee上

1. 採坑記錄

  • 先說下猜到的坑,給各位後來這一些意見。

1.1. 網速相關

  • 建議在正式安裝前先進行這些步驟。
  • git clone cvat 的速度非常慢
    • 使用gitee複製cvat原始碼,直接從gitee上拉。
    • 我複製了一份自己的 git clone https://gitee.com/irving512/cvat.git
  • 安裝docker速度非常慢
    • 這部分內容其實是安裝文件裡有的,只是修改了一下獲取資料的源。
    • 全部使用阿里源
sudo apt-get update
sudo apt-get --no-install-recommends install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
sudo add-apt-repository \
  "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) \\
  stable"
sudo apt-get update
sudo apt-get --no-install-recommends install -y docker-ce docker-ce-cli containerd.io
  • docker pull 速度非常慢。
    • 解決方案:新增 docker 映象。
    • 具體方式就是:修改/新增 /etc/docker/daemon.json,新增以下內容
{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}
  • apt install 速度非常慢

    • 在Dockerfile中新增阿里源。

    • 根據Ubuntu版本不同,要新增的源也不同。

# v1.1.0 使用的Ubuntu 16.04,要新增的內容是
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial main          > /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial main        >> /etc/apt/sources.list
RUN echo                                   >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main      >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main    >> /etc/apt/sources.list
RUN echo                                   >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial universe        >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe      >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe    >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe  >> /etc/apt/sources.list
RUN echo                                   >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial-security main      >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main    >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe    >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe  >> /etc/apt/sources.list

# v1.2.0/develop 使用的Ubuntu是 20.04,要新增的內容是
RUN echo deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse > /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse >> /etc/apt/sources.list
RUN echo  >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse >> /etc/apt/sources.list
RUN echo  >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse >> /etc/apt/sources.list
RUN echo  >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse >> /etc/apt/sources.list
RUN echo  >> /etc/apt/sources.list
RUN echo deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse >> /etc/apt/sources.list
RUN echo deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse >> /etc/apt/sources.list
  • pip install 速度非常慢

    • 這個很好處理,就是在所有 pip install 後面臨時新增國內源。
    • 要新增的內容是 -i https://mirrors.aliyun.com/pypi/simple/
    • 需要修改的檔案有 Dockerfile/Dockerfile.ci 兩個檔案。
  • npm install 速度非常慢

    • 新增 npm 的國內源即可。
    • Dockerfile.ui中新增一句RUN npm config set registry https://registry.npm.taobao.org
    • 新增在第二行。
  • git clone 速度非常慢

    • pip源有一個是要從github上下載,所以需要修改。
    • 需要修改的內容是在 cvat/requirements/base.txt
    • git+https://github.com/openvinotoolkit/datumaro@v0.1.3 修改為 git+https://gitee.com/openvinotoolkit-prc/datumaro.git@v0.1.3
  • 從github下載速度非常慢

    • 這個指的是 node-sass 在安裝時候需要從github中下載資料。
    • 解決方案:該問題本質是安裝 node-sass 的問題,所以先手動安裝 node-sass 並制定國內源即可。
    • 就是在Docerfile.ui新增 RUN npm config set sass_binary_site http://cdn.npm.taobao.org/dist/node-sass -g npm install --no-optional npm i node-sass --save
    • 新增的位置是在 cvat-canvas 安裝之前,即在 WORKDIR /tmp/cvat-canvas/ 之後。
  • 有一個現在我解決不了的網速相關問題

    • 在v1.1.0中,會新增別的apt源,即add-apt-repository ppa:mc3man/xerus-media -y
    • 我在自己家電腦上從這個源安裝時,無法從mc3man中獲取資料,所以這一步就卡住沒辦法了……
    • 解決方案:
      • 換成v1.2.0-alpha就不用這個倉庫了,這是我的最終方案……

1.2. 其他問題

  • pycocotools 安裝失敗
    • 這個問題在v1.1.0中沒有,在v1.2.0-alpha和develop上都有。
    • 本質就是
      • 通過 pip install pycocotools不會自動安裝其依賴
      • 在依賴同時 pip install 時安裝不成功
    • 解決方案:先pip install cython numpy,再pip install pycocotools
  • 記憶體過小會導致安裝失敗
    • 阿里雲最開始租用了一臺最差的伺服器,即只有1G的記憶體,結果在安裝pyhash的時候提示記憶體不夠了……
    • 失敗了之後我就升級了伺服器配置,使用了2G記憶體,就沒問題了。
    • 好像是安裝 v1.1.0 時候的問題,不知道v1.2.0-alpha是否存在這個問題。
  • node-sass 版本導致的問題
    • 表現形式:具體錯誤忘了,大概意思就是 sass x64-83_binding 這個檔案不存在,404了。
    • 這個錯誤只有在v1.1.0存在,導致問題的原因是 node-sass的版本太低。
    • 換句話說,如果使用 v1.1.0版本,必須升級 node-sass 的版本,從v4.13.1升到v4.14.1。
    • 具體怎麼升級呢
      • 修改 cvat-canvas和cvat-ui中的package.json檔案,升級版本為v4.14.1
      • 修改 cvat-canvas和cvat-ui中的package-lock.json檔案,刪除node-sass相關內容即可。

2. 安裝基本流程

2.1. 準備工作

  • 下載cvat原始碼

    • 如果cvat下載速度慢,可以去gitee上下載。
  • 設定之前提到的各種源

    • 包括 docker/docker pull/apt/pip/npm 等問題
  • 設定一切其他cvat選項

    • 主要包括設定伺服器ip(為了讓其他終端連線到安裝的cvat,必須開放對應的埠)
    • 預設埠使用的是8080,需要將伺服器的8080埠開放
    • 設定shared path,即在新建task的時候指定share path中的資料作為資料來源。
    • 即新建 docker-compose.override.yml,內容如下
version: '3.3'

services:
  cvat_proxy:
    environment:
      CVAT_HOST: my_ip or_my_url

  cvat:
    environment:
      CVAT_SHARE_URL: 'Mounted from /mnt/share host directory'
    volumes:
      - cvat_share:/home/django/share:ro

volumes:
  cvat_share:
    driver_opts:
      type: none
      device: /root/data  # 需要修改的就是這個元素
      o: bind

2.2. 基本安裝流程

  • 安裝docker,在上面提到過了,需要修改源
  • 其他相關操作
sudo groupadd docker
sudo usermod -aG docker $USER

sudo apt-get --no-install-recommends install -y python3-pip
sudo python3 -m pip install setuptools docker-compose

sudo apt-get --no-install-recommends install -y git
git clone https://gitee.com/irving512/cvat.git
cd cvat
# 可能還需要切換分支,比如使用我自己的 develop-20201204-aliyun

# 在執行這一步前需要配置好所有源
# 安裝容器
docker-compose build

# 啟動容器
docker-compose up -d

# 建立超級使用者
docker exec -it cvat bash -ic 'python3 ~/manage.py createsuperuser'

# 之後的使用就不屬於安裝範圍了

相關文章