每次运行 docker run --rm -v $(pwd)/output:/app/output modelscope-video 都会重新下载大文件(如 3.67GB、5.26GB 等),这确实会

每次运行 docker run --rm -v $(pwd)/output:/app/output modelscope-video 都会重新下载大文件(如 3.67GB、5.26GB 等),这确实会浪费时间

优化方案

为了避免重复下载大文件和依赖,您需要持久化模型文件和 Python 环境。以下是具体步骤:

1. 使用 Docker 数据卷或绑定挂载持久化模型文件

modelscope 默认将模型文件下载到容器内的缓存目录(通常是 /root/.cache/modelscope)。您可以将这个目录挂载到主机上,避免每次重新下载。

  • 修改 Docker 运行命令: 在主机上创建一个目录用于缓存模型文件,例如 $(pwd)/modelscope_cache:

    bash

    CollapseWrapRun

    Copy

    mkdir -p $(pwd)/modelscope_cache

    然后修改 docker run 命令,添加挂载:

    bash

    CollapseWrapRun

    Copy

    docker run --rm -v $(pwd)/output:/app/output -v $(pwd)/modelscope_cache:/root/.cache/modelscope modelscope-video

    这会将模型文件缓存到主机的 modelscope_cache 目录,下次运行时会直接使用缓存的文件。

  • 验证缓存: 运行命令后,检查 $(pwd)/modelscope_cache 目录是否包含下载的模型文件。如果有,说明缓存成功。

2. 构建自定义 Docker 镜像

通过构建一个包含所有依赖和模型文件的自定义镜像,可以避免每次运行时的安装和下载。

  • 创建 Dockerfile: 在项目目录下创建 Dockerfile:

    dockerfile

    CollapseWrap

    Copy

    FROM modelscope-video # 安装 sortedcontainers(解决之前的 ModuleNotFoundError) RUN pip install sortedcontainers # 安装其他依赖(如 datasets==2.16.1) RUN pip install datasets==2.16.1 # 预下载模型文件 RUN python -c "from modelscope.pipelines import pipeline; pipeline('text-to-video-synthesis', 'damo/text-to-video-synthesis', device='cpu')" # 设置工作目录 WORKDIR /app

  • 构建镜像

    bash

    CollapseWrapRun

    Copy

    docker build -t my-modelscope-video .

  • 运行容器: 使用新镜像运行:

    bash

    CollapseWrapRun

    Copy

    docker run --rm -v $(pwd)/output:/app/output my-modelscope-video

    这样,所有依赖和模型文件都已预装在镜像中,无需重复下载。

3. 使用 Docker 容器持久化(避免 --rm)

如果不想构建新镜像,可以运行一个持久化容器,安装依赖和下载模型后重复使用。

  • 启动容器并保持运行

    bash

    CollapseWrapRun

    Copy

    docker run -d --name modelscope-container -v $(pwd)/output:/app/output -v $(pwd)/modelscope_cache:/root/.cache/modelscope modelscope-video tail -f /dev/null

  • 安装依赖: 进入容器并安装 sortedcontainers 和其他依赖:

    bash

    CollapseWrapRun

    Copy

    docker exec -it modelscope-container bash pip install sortedcontainers pip install datasets==2.16.1

  • 运行脚本: 在容器内运行您的脚本:

    bash

    CollapseWrapRun

    Copy

    python text-to-video.py

  • 重用容器: 下次直接使用已有容器:

    bash

    CollapseWrapRun

    Copy

    docker exec -it modelscope-container bash

    这样模型文件和依赖会保留,避免重复下载。

4. 使用虚拟环境优化 Python 依赖

为了避免 root 用户警告并提高依赖管理效率,建议在容器内使用虚拟环境。

  • 在容器内创建虚拟环境:

    bash

    CollapseWrapRun

    Copy

    docker run -it --rm -v $(pwd)/output:/app/output -v $(pwd)/modelscope_cache:/root/.cache/modelscope modelscope-video bash python3 -m venv /app/venv source /app/venv/bin/activate pip install sortedcontainers datasets==2.16.1

  • 运行脚本:

    bash

    CollapseWrapRun

    Copy

    python text-to-video.py

  • 将虚拟环境挂载到主机: 为持久化虚拟环境,修改运行命令:

    bash

    CollapseWrapRun

    Copy

    docker run --rm -v $(pwd)/output:/app/output -v $(pwd)/modelscope_cache:/root/.cache/mo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值