共享 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

例如 limin1lhywrj 都分别执行:

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. 重要使用规范

为了避免共享环境损坏,建议遵守以下规则:

  1. 不要多个用户/容器同时修改同一个环境。
  2. 不要多个用户同时对同一个环境执行:
    micromamba install ...
    micromamba update ...
    pip install ...
    pip uninstall ...
    
  3. 推荐一个环境管理者负责创建和更新环境。
  4. 普通用户主要使用已有环境运行实验。
  5. 如果不同用户需要安装不同依赖,建议创建各自独立环境,例如:
    /cdata/micromamba/envs/lhy_project
    /cdata/micromamba/envs/wrj_project
    /cdata/micromamba/envs/limin1_project
    
  6. package cache 和 pip cache 可以共享,但环境修改需要谨慎。
  7. 不建议普通用户随意修改 base 环境。
  8. 如果需要长期维护公共环境,建议由环境管理者统一安装和更新依赖。

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

posted @ 2026-07-02 12:14  wuhaoliu  阅读(23)  评论(0)    收藏  举报