共享 Micromamba 环境配置
/cdata 外挂目录共享 Micromamba 环境配置笔记
本文记录如何将 micromamba、conda/mamba 环境、package cache、pip cache 和常用模型缓存统一放到 /cdata 外挂目录中,供多个容器/用户共享使用。
适用场景:
- 多个容器共享同一个外挂硬盘
/cdata - 多个用户需要使用同一套 micromamba 工具
- 希望节省 conda/mamba package cache、pip cache、模型 cache 占用
- 希望环境由环境管理者统一维护,普通用户主要负责运行实验
注意:
- 可以共享
micromamba程序、环境目录、package cache 和 pip cache。 - 不建议多个用户/容器同时修改同一个环境。
- 推荐一个环境管理者负责创建和更新环境,其他用户只使用环境。
1. Micromamba 安装
由环境管理者执行。
cd /cdata/Downloads
wget -O micromamba.tar.bz2 "https://micro.mamba.pm/api/micromamba/$(uname)-$(uname -m)/latest"
tar -xvjf micromamba.tar.bz2 bin/micromamba
mkdir -p /cdata/tools/micromamba/bin
mv bin/micromamba /cdata/tools/micromamba/bin/
chmod +x /cdata/tools/micromamba/bin/micromamba
mkdir -p /cdata/micromamba/envs
sudo mkdir -p /cdata/micromamba/user_pkgs
测试:
/cdata/tools/micromamba/bin/micromamba --version
2. .condarc 配置
将 .condarc 放到 /cdata/micromamba/.condarc,供多个用户/容器共用。
mkdir -p /cdata/micromamba/envs
mkdir -p /cdata/micromamba/pkgs
cat > /cdata/micromamba/.condarc <<'EOF'
channels:
- conda-forge
- defaults
channel_priority: flexible
envs_dirs:
- /cdata/micromamba/envs
pkgs_dirs:
- /cdata/micromamba/pkgs
auto_activate_base: false
show_channel_urls: true
EOF
如果希望依赖解析更稳定,也可以将:
channel_priority: flexible
改成:
channel_priority: strict
科研环境中,如果主要使用 conda-forge,通常更推荐 strict。
3. 共享 cache 目录创建
创建 pip cache、Hugging Face cache、PyTorch cache 和通用 cache 目录。
mkdir -p /cdata/pip_cache
mkdir -p /cdata/huggingface_cache
mkdir -p /cdata/torch_cache
mkdir -p /cdata/.cache
推荐目录结构:
/cdata
├── tools/
│ └── micromamba/
│ └── bin/
│ └── micromamba
├── micromamba/
│ ├── .condarc
│ ├── envs/
│ └── pkgs/
├── pip_cache/
├── huggingface_cache/
├── torch_cache/
├── .cache/
├── projects/
└── datasets/
4. 共享用户组设置
创建共享组:
sudo groupadd micromamba_users
如果提示组已经存在,可以忽略。
将需要使用 micromamba 的用户加入共享组:
sudo usermod -aG micromamba_users limin1
sudo usermod -aG micromamba_users lhy
sudo usermod -aG micromamba_users wrj
注意:请根据实际用户名修改。
例如如果实际用户叫 limin1,不要写成 limin。
用户加入新组后,需要重新登录 shell 或重新进入容器终端,否则组权限不会立刻生效。
重新登录后检查:
id
需要看到:
micromamba_users
5. 给共享目录设置组权限
需要纳入共享组的目录包括:
/cdata/tools/micromamba
/cdata/micromamba
/cdata/micromamba/envs
/cdata/micromamba/pkgs
/cdata/pip_cache
/cdata/huggingface_cache
/cdata/torch_cache
/cdata/.cache
执行:
sudo chgrp -R micromamba_users \
/cdata/micromamba/user_pkgs \
/cdata/pip_cache \
/cdata/huggingface_cache \
/cdata/torch_cache \
/cdata/.cache
sudo chmod -R g+rwX \
/cdata/micromamba/user_pkgs \
/cdata/pip_cache \
/cdata/huggingface_cache \
/cdata/torch_cache \
/cdata/.cache
sudo find \
/cdata/micromamba/user_pkgs \
/cdata/pip_cache \
/cdata/huggingface_cache \
/cdata/torch_cache \
/cdata/.cache \
-type d -exec chmod g+s {} \;
其中 chmod g+s 的作用是:以后在这些目录中新建的文件/文件夹会自动继承 micromamba_users 组。
检查权限:
ls -ld /cdata/micromamba /cdata/micromamba/envs /cdata/micromamba/pkgs /cdata/pip_cache
理想输出类似:
drwxrwsr-x limin1 micromamba_users /cdata/micromamba
drwxrwsr-x limin1 micromamba_users /cdata/micromamba/envs
drwxrwsr-x limin1 micromamba_users /cdata/micromamba/pkgs
drwxrwsr-x limin1 micromamba_users /cdata/pip_cache
重点是:
group = micromamba_users
权限中有 s,例如 drwxrwsr-x
6. 每个用户的环境变量配置
每个需要使用共享 micromamba 的用户都需要配置自己的 ~/.bashrc。
例如 limin1、lhy、wrj 都分别执行:
cat >> ~/.bashrc <<'EOF'
# Shared micromamba on /cdata
export PATH="/cdata/tools/micromamba/bin:$PATH"
export MAMBA_ROOT_PREFIX="/cdata/micromamba"
export CONDARC="/cdata/micromamba/.condarc"
# Shared caches on /cdata
export PIP_CACHE_DIR="/cdata/pip_cache"
export HF_HOME="/cdata/huggingface_cache"
export TORCH_HOME="/cdata/torch_cache"
export XDG_CACHE_HOME="/cdata/.cache"
export MAMBA_PKGS_DIRS="/cdata/micromamba/user_pkgs/$USER"
export CONDA_PKGS_DIRS="/cdata/micromamba/user_pkgs/$USER"
EOF
source ~/.bashrc
检查是否生效:
which micromamba
echo $MAMBA_ROOT_PREFIX
echo $CONDARC
echo $PIP_CACHE_DIR
pip cache dir
期望输出中包含:
/cdata/tools/micromamba/bin/micromamba
/cdata/micromamba
/cdata/micromamba/.condarc
/cdata/pip_cache
7. 初始化 shell
每个用户第一次使用 micromamba activate 前,建议执行一次:
micromamba shell init -s bash -r /cdata/micromamba
source ~/.bashrc
然后测试:
micromamba activate
micromamba env list
8. 创建环境
创建环境时可以使用环境名:
micromamba create -y -n test python=3.10
由于 .condarc 中配置了:
envs_dirs:
- /cdata/micromamba/envs
所以环境会创建到:
/cdata/micromamba/envs/test
也可以显式指定路径:
micromamba create -y -p /cdata/micromamba/envs/test python=3.10
激活环境:
micromamba activate test
或:
micromamba activate /cdata/micromamba/envs/test
9. 检查共享 cache 是否正常
检查 micromamba 配置:
micromamba config list
micromamba info
检查 pip cache:
pip cache dir
测试 pip cache 是否可写:
python -m pip install numpy==1.26.4
如果没有出现下面警告,说明 pip cache 权限正常:
WARNING: The directory '/cdata/pip_cache' or its parent directory is not owned or is not writable by the current user. The cache has been disabled.
10. 重要使用规范
为了避免共享环境损坏,建议遵守以下规则:
- 不要多个用户/容器同时修改同一个环境。
- 不要多个用户同时对同一个环境执行:
micromamba install ... micromamba update ... pip install ... pip uninstall ... - 推荐一个环境管理者负责创建和更新环境。
- 普通用户主要使用已有环境运行实验。
- 如果不同用户需要安装不同依赖,建议创建各自独立环境,例如:
/cdata/micromamba/envs/lhy_project /cdata/micromamba/envs/wrj_project /cdata/micromamba/envs/limin1_project - package cache 和 pip cache 可以共享,但环境修改需要谨慎。
- 不建议普通用户随意修改
base环境。 - 如果需要长期维护公共环境,建议由环境管理者统一安装和更新依赖。
11. 常见问题
问题 1:创建环境时报 Permission denied
报错示例:
critical libmamba filesystem error: cannot create directories: Permission denied [/cdata/micromamba/envs/xxx/conda-meta]
原因:
当前用户对 /cdata/micromamba/envs 没有写权限。
检查:
ls -ld /cdata/micromamba/envs
id
修复:
sudo chgrp -R micromamba_users /cdata/micromamba/envs /cdata/micromamba/pkgs
sudo chmod -R g+rwX /cdata/micromamba/envs /cdata/micromamba/pkgs
sudo find /cdata/micromamba/envs /cdata/micromamba/pkgs -type d -exec chmod g+s {} \;
并确认用户已经加入 micromamba_users 组。
问题 2:pip cache 不可写
报错示例:
WARNING: The directory '/cdata/pip_cache' or its parent directory is not owned or is not writable by the current user. The cache has been disabled.
原因:
当前用户对 /cdata/pip_cache 没有写权限。
修复:
sudo chgrp -R micromamba_users /cdata/pip_cache
sudo chmod -R g+rwX /cdata/pip_cache
sudo find /cdata/pip_cache -type d -exec chmod g+s {} \;
问题 3:micromamba 命令找不到
原因:
PATH 没有加入 /cdata/tools/micromamba/bin。
修复:
echo 'export PATH="/cdata/tools/micromamba/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
检查:
which micromamba
micromamba --version
问题 4:没有读取共享 .condarc
检查:
echo $CONDARC
micromamba config list
如果没有指向:
/cdata/micromamba/.condarc
则添加:
echo 'export CONDARC="/cdata/micromamba/.condarc"' >> ~/.bashrc
source ~/.bashrc
问题 5:用户加入组后仍然没有权限
原因:
用户加入新组后,当前 shell 还没有刷新组信息。
检查:
id
如果没有看到:
micromamba_users
说明当前 shell 还没有加载新组。
解决方法:
退出当前终端或容器 shell,重新登录后再检查:
id
12. 快速检查命令汇总
which micromamba
micromamba --version
echo $MAMBA_ROOT_PREFIX
echo $CONDARC
echo $PIP_CACHE_DIR
micromamba config list
micromamba info
micromamba env list
pip cache dir
id
ls -ld \
/cdata/tools/micromamba \
/cdata/micromamba \
/cdata/micromamba/envs \
/cdata/micromamba/puser_pkgs \
/cdata/pip_cache \
/cdata/huggingface_cache \
/cdata/torch_cache \
/cdata/.cache

浙公网安备 33010602011771号