1. 环境搭建与版本控制

任务目标

在本案例中,你将搭建一个用于后续99个MLOps案例的本地实验环境。完成后的环境包含:Python 3.11虚拟环境(依赖隔离)、Docker(容器化运行环境)以及Git(版本控制)。最终在当前目录初始化一个名为mlops-lab的项目仓库,并完成首次提交。

环境依赖

  • 操作系统:Ubuntu 22.04+ / macOS 13+ / Windows 11 + WSL2
  • 已安装:Python 3.10+、Docker Engine 24+、Git 2.40+
  • 网络:可访问PyPI与Docker Hub(或已配置镜像源)

实施步骤与代码

以下命令在项目根目录mlops-lab下按顺序执行。所有命令均需在终端中运行。

# 1. 创建并进入项目目录
mkdir mlops-lab && cd mlops-lab

# 2. 创建Python虚拟环境(使用venv)
python3 -m venv .venv

# 3. 激活虚拟环境
# Linux/macOS:
source .venv/bin/activate
# Windows (WSL2中与Linux相同;若在CMD/PowerShell中则执行 .venv\Scripts\activate)

# 4. 升级pip并安装核心依赖(写入requirements.txt以便复现)
python -m pip install --upgrade pip
echo "mlflow==2.12.1
dvc==3.48.0
pytest==8.2.0
python-dotenv==1.0.1" > requirements.txt
pip install -r requirements.txt

# 5. 验证Python环境
python -c "import mlflow, dvc, pytest; print('Python env OK:', mlflow.__version__, dvc.__version__, pytest.__version__)"

# 6. 初始化Git仓库并配置用户信息(替换为你的用户名/邮箱)
git init
git config user.name "Your Name"
git config user.email "your.email@example.com"

# 7. 创建Dockerfile(最小可用,用于后续案例的容器化实验)
cat > Dockerfile <<'EOF'
FROM python:3.11-slim
WORKDIR /workspace
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["bash"]
EOF

# 8. 创建.dockerignore避免将虚拟环境与Git元数据打入镜像
echo ".venv/
.git/
__pycache__/
*.pyc" > .dockerignore

# 9. 创建.gitignore
echo ".venv/
__pycache__/
*.pyc
.mlflow/
*.db" > .gitignore

# 10. 验证Docker镜像可构建(首次构建需拉取基础镜像,约1-2分钟)
docker build -t mlops-lab:0.1 .

# 11. 首次提交
git add .
git commit -m "Initial MLOps environment setup"

# 12. 输出最终状态
echo "--- Git log ---"
git log --oneline
echo "--- Docker images ---"
docker images | grep mlops-lab

验证方法与通过标准

执行完上述命令后,按以下顺序检查,全部满足即环境搭建成功:

  1. Python虚拟环境:终端提示符前出现(.venv)前缀,且第5步输出Python env OK: 2.12.1 3.48.0 8.2.0(版本号可能因补丁更新略有差异)。
  2. Docker:第10步构建无报错,第12步docker images输出中包含mlops-lab镜像且TAG为0.1。
  3. Git:第12步git log显示一条提交记录,提交信息为Initial MLOps environment setup。
  4. 仓库完整性:git status显示工作区干净(无未提交变更)。

常见问题

  • pip安装超时:可临时使用国内镜像源,如pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt。
  • Docker权限不足:若提示permission denied,将当前用户加入docker组:sudo usermod -aG docker $USER,然后重新登录终端。
  • 虚拟环境激活失败:确认Python版本≥3.10,若系统仅有python3命令,使用python3 -m venv .venv创建后,激活命令不变。