2026年4月23日 研究日志¶

今日主题:配置环境。没想到竟然折腾了一整天(笑)果然环境配置什么时候都是老大难啊。今天稍微分享一下我的一些方法吧。

1. 为什么一定要用虚拟环境¶

今天的折腾再次证明:
深度学习环境不隔离 = 灾难。(实际上隔离也是门道,我今天遇到了设置了独立环境照样到base缓存里去找的诡异玩意)

  • 不同模型依赖不同版本的 PyTorch / CUDA
  • transformers 会扫描全局缓存,容易加载错模型
  • pip/conda 混用会导致依赖冲突
  • 大模型(如 ERNIE‑Image)体积巨大,污染主环境后很难清理

所以,为每个项目创建独立环境是最稳妥的做法。


2. conda 虚拟环境的核心操作¶

2.1 创建环境¶

指定 Python 版本(一般推荐 3.10啦……至于具体情况……就具体说吧):

conda create -n ernie python=3.10

2.2 激活环境¶

conda activate ernie

2.3 查看所有环境¶

conda env list

或:

conda info --envs

2.4 删除环境¶

conda remove -n ernie --all

2.5 查看环境安装路径¶

conda config --show envs_dirs

这些命令是今天频繁使用的基础操作,也是保持环境干净的第一步。


3. HuggingFace 缓存隔离:避免模型“串台”¶

今天遇到的最典型问题是:

  • transformers 会扫描全局缓存
  • 发现我之前下载过的 Mistral3 / Mixtral / Qwen (这些可不能删,其他环境等着用呢)
  • 结果 ERNIE‑Image 初始化时加载错模型
  • 报出 text_encoder 类型不匹配

解决方案是:为 ERNIE‑Image 单独创建缓存目录。

3.1 设置独立缓存目录¶

import os
os.environ["HF_HOME"] = "C:/Users/Admin/ernie_cache"

第一次运行时,HuggingFace 会自动创建这个目录,并把模型下载进去。

3.2 为什么要隔离缓存?¶

  • 避免加载错模型(尤其是 PE / text_encoder)
  • 避免旧缓存占用几十 GB
  • 避免 transformers 自动 fallback 到错误模型
  • 让每个项目的模型互不干扰

这是今天最关键的经验之一。


4. 清理旧缓存:释放空间 & 避免冲突¶

旧缓存路径通常是:

C:/Users/Admin/.cache/huggingface/hub/

里面可能包含:

  • 旧版 ERNIE‑Image(20–30GB)
  • 各种 LLM(Mistral、Mixtral、Qwen、DeepSeek 等)
  • tokenizer、配置文件、权重碎片

如果不再需要,可以直接删除整个文件夹。

删除后:

  • 不影响新缓存
  • 不影响 conda 环境
  • 不影响 CUDA / PyTorch
  • transformers 不会再扫描到旧模型

这是保持环境干净的第二步。


5. 让环境真正“干净”的最佳实践¶

✔ 每个项目一个 conda 环境¶

避免依赖冲突。

✔ 每个大模型一个 HF 缓存目录¶

避免模型串台。

✔ 不混用 pip 和 conda¶

尤其是 PyTorch。

✔ 记录环境配置(requirements.txt / conda env export)¶

方便复现。

✔ 定期清理旧缓存¶

避免几十 GB 的模型堆积。


让一个生物背景的搞这些真是有些头疼,这玩意折腾我一天……好吧其实开会也花了不少时间。算了,反正环境搞好了,程序在跑了,具体情况明天再说吧!