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