当前位置: 首页 > wzjs >正文

aspcms 你的网站未安装 请先安装什么是广告营销

aspcms 你的网站未安装 请先安装,什么是广告营销,做3d教学网站,webmysql网站开发实例有时候为了容器化部署算法,经常我们需要打包我们的conda环境,我们可以看到不同的conda环境就是在不同的envs里,一个直觉就是直接拷贝走这整个目录。 有时候这样是可以work的,但是有一个潜在的问题,比如你看我进入我的…

有时候为了容器化部署算法,经常我们需要打包我们的conda环境,我们可以看到不同的conda环境就是在不同的envs里,一个直觉就是直接拷贝走这整个目录。
在这里插入图片描述
有时候这样是可以work的,但是有一个潜在的问题,比如你看我进入我的index-tts去查看我的pip指令
在这里插入图片描述
可以看到shebang行这里写死了一个从home目录下的python3.10解释器的绝对路径,而这样的库函数移植到容器里,是无论如何也找不到这个解释器的,所以就会报错。当然你有时候会足够幸运,你项目的依赖都没有这个shebang行的问题,那你的项目装进容器里就是没有问题的。当然,作为优秀的软件工程师,我们不喜欢这种不可控的模式。

那么我们有什么什么优雅的方法解决这个问题呢,哎,有的
conda-pack is all you need!
在这里插入图片描述

这里可以去conda-pack官方文件查看更多用法

把“大象”塞进 Docker 这个“冰箱”

我们现在再来看看,有了conda-pack工具后:“把大象塞进冰箱总共需要几步?”

答案很简单,总共分三步:

  1. 打开冰箱门。

准备一个基础镜像

  1. 把大象塞进去。

把conda环境放进去

  1. 关上冰箱门。

:x


步骤一:打开冰箱门 (准备目标环境)

首先,我们需要一个“冰箱”——也就是我们的 Docker 容器。我们得把它准备好,确保它有存放“大象”所需的基础设施。这个初始CUDA版本的选择,要看你的依赖使用了什么环境,如果你的git项目有官方的Dockerfile,就参考它的基础镜像,如果没有,就参考你的依赖使用的cuda版本。

在这里插入图片描述
比如我这里看到我的torch就是使用cuda12.1的版本,所以我应该选择cuda12.1相关的。这个不分不清楚的可以看一下之前的文章如何选择你的cuda镜像,CUDA和cuDNN?

比如,我们先有这么一个基础的 Dockerfile

# 使用官方提供的 CUDA 11.8 基础镜像
FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu20.04# 设置环境变量,避免 apt-get 提示交互
ENV DEBIAN_FRONTEND=noninteractive# 安装一些基础的系统工具,比如解压工具和网络工具
RUN apt-get update && apt-get install -y --no-install-recommends \ffmpeg \tar \gzip \libgomp1 \vim \git \curl \&& rm -rf /var/lib/apt/lists/*# 设置工作目录并创建一个专门存放环境的目录
WORKDIR /workspace
ENV ENV_PATH=env
RUN mkdir -p ${ENV_PATH}

这里假设容器的规范是使用/env目录作为你的环境,所以Dockerfile这里我们有一个这个环境变量设置的指令
ENV ENV_PATH=env
RUN mkdir -p ${ENV_PATH}
后面我们会把conda里的环境都放到这里

到这里,我们的“冰箱”已经准备就绪:它基于一个带有 CUDA 的 Ubuntu 系统,并且安装了必要的工具。

步骤二:把大象塞进去 (打包并移动 Conda 环境)

conda-pack 可以将一个 Conda 环境打包成一个压缩包。 这个工具会处理好所有与路径相关的问题,解决之前我们遇到的哪个shebang行的问题。

在你的宿主机上,进入你的项目目录,执行命令来打包你的环境:

# -n 指的是环境名称
conda pack -n index-tts -o index-tts-env.tar.gz

现在,你得到了一个 index-tts-env.tar.gz 文件。这就是我们打包好的、可以轻松移动的“大象”。你的目录应该像下面图片所示,压缩包.tar.gz和代码文件和Dockerfile文件在同一目录
在这里插入图片描述

接下来,我们在 Dockerfile 中把它“塞”进冰箱并“解包”:

# 拷贝当前构建上下文的所有文件到容器内
# 其中就包括我们打包好的 index-tts-env.tar.gz
COPY . .# --- 关键步骤:解压 conda-pack 打包的环境 ---
# 将打包好的环境移动到 /env 目录并解压
# tar 的 -C 参数指定了解压的目标目录
RUN mv /workspace/index-tts-env.tar.gz ${ENV_PATH}/ \&& tar -xzf ${ENV_PATH}/index-tts-env.tar.gz -C ${ENV_PATH}/ \&& rm ${ENV_PATH}/index-tts-env.tar.gz # 解压后删除tar包,保持镜像整洁

通过这几行命令,我们将复杂的 Conda 环境完整、无损地迁移到了容器的 /env 目录中。

步骤三:关上冰箱门 (激活环境并完成配置)

“大象”已经在里面了,但我们还需要让“冰箱”知道如何使用它。我们需要告诉 Docker,当它运行命令时,应该优先使用我们刚刚放入的环境中的程序(如 python, pip 等)。

这是通过修改 PATH 环境变量来完成的:

# 将环境的 bin 目录添加到容器的 PATH 环境变量中
# 这样容器启动后就可以直接运行环境中的可执行文件
ENV PATH="${ENV_PATH}/bin:${PATH}"# 暴露服务端口
EXPOSE 8888# 定义一个假死命令,方便我们进入容器调试,确保一切正常
CMD ["sleep", "infinity"]

ENV PATH="${ENV_PATH}/bin:${PATH}" 这行代码是重点。
它获取现有的 环境变量PATH值,然后把 ${ENV_PATH}/bin 加到它的前面,这样就完成了环境变量的新增。

这里可能有一个违反直觉的地方,windows环境里,我们从系统设置里改环境变量操作得很多了,都是用的;分隔符,但是在类unix系统中,分隔符使用的是冒号:,所以这里的冒号:不是key:value的意思,而是var1;var2的意思。

写入环境变量它确保了当你在容器里执行 python 命令时,运行的是 /env/bin/python,而不是系统可能自带的其他版本。

至此,“冰箱门”已经关好。我们获得了一个包含完整、可用、隔离的 Conda 环境的 Docker 镜像。

为什么这种方法更好?

我倾向于这种数据驱动的、简单直接的方法,因为它带来了几个显而易见的好处:

  1. 更高的可靠性:conda和pip的安装有时候也会遇到问题,你不再需要在 docker build 的过程中祈祷 condapip 能够正确解析和下载所有包。你是在迁移一个已经在你本地验证过、完全可用的环境的“快照”。
  2. 更快的构建速度docker build 的过程从“在线下载并解决几十上百个包的依赖关系”变成了“解压一个本地文件”。对于大型环境,这能将镜像构建时间从几十分钟缩短到几十秒。

正如 conda-pack 官方文档所说,它对于将应用及其环境捆绑在一起进行部署非常有用。 这种方法摒弃了不必要的抽象,用最简单的函数式操作(打包 -> 拷贝 -> 解压)解决了最核心的问题,这正是我所推崇的工程哲学。

http://www.dtcms.com/wzjs/151560.html

相关文章:

  • 做外贸网站咨询百度网站提交入口
  • 如何做纯文本网站竞价外包
  • 福建网站开发公司电话游戏推广合作平台
  • 网站怎么做小程序十大经典口碑营销案例
  • 企业品牌网站开发制作合同南京关键词网站排名
  • 石家庄做网站的公司山东关键词优化联系电话
  • 政府网站建设指标抖音营销软件
  • 网站建设阶段性工作重点搜索引擎推广排名
  • 国外网站404错误页长春网站制作系统
  • 网站的推广平台开鲁网站seo转接
  • 编程和做网站有关系吗信息流广告投放公司
  • 免费做背景调查的网站google seo 优化招聘
  • 网站建设是如何称呼的网站seo是干什么的
  • 扬州做网站哪家好创建网站的流程是什么
  • 建造师免费自学网站夫唯seo怎么样
  • 网站跳出率 查询域名官网
  • 企业宣传册免费模板网站企业网站推广的形式有哪些
  • 乌鲁木齐网站开发价格俄罗斯引擎搜索
  • 平度城乡建设局网站关键词排名方法
  • 福州网站建设多少钱外链网
  • 企业网站优化的原则属性词 关键词 核心词
  • 如何给网站写文章汕头网站关键词推广
  • 网站免费正能量软件下载发软文是什么意思
  • 杭州做外贸网站湖南企业seo优化推荐
  • server2008做DNS与网站如何能查到百度搜索排名
  • 清新太和做网站百度推广一年大概多少钱
  • 淘宝做的网站靠谱吗seo网络运营
  • 微信公众号网页怎么制作五种关键词优化工具
  • 石大网页设计与网站建设客观题宁波seo哪家好
  • 瑞安市聚齐网络科技有限公司seo技术助理