恭喜连接成功!🎉 现在按照下面的新手 checklist 操作,5 分钟后你就能开始跑代码了:

第一步:验证环境(必做)

在 VS Code 的底部终端(如果没有,按 Ctrl+` 打开)输入以下命令:

1. 查看显卡(确认平台)

1
nvidia-smi

预期输出:显示 RTX 3090RTX 4090,以及显存占用情况。

  • 如果报错 command not found → 重启实例或联系客服

2. 验证 PyTorch 和 CUDA

1
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA可用: {torch.cuda.is_available()}'); print(f'显卡: {torch.cuda.get_device_name(0)}')"

预期输出:

1
2
3
PyTorch: 2.x.x
CUDA可用: True
显卡: NVIDIA GeForce RTX 3090
  • 看到 True 说明 GPU 可用,可以开始炼丹了!

第二步:整理工作空间(养成好习惯)

不要在根目录 /root 乱放文件,执行:

1
2
3
4
5
6
7
8
9
10
11
12
# 进入数据盘(空间大,重启不会丢)
cd /root/autodl-tmp

# 创建项目文件夹(用英文,别用中文)
mkdir cv-project
cd cv-project

# 创建子目录
mkdir data # 放图片数据集
mkdir models # 放训练好的模型
mkdir src # 放代码文件
mkdir notebooks # 放 Jupyter 笔记本(可选)

在 VS Code 左侧文件栏刷新,你现在能看到这些文件夹了。

第三步:跑一个 Hello World(验证全流程)

src 文件夹里新建文件 test_gpu.py,粘贴:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import torch
import time

# 检查 GPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
print(f"使用设备: {device}")

# 简单的矩阵乘法测试(验证 GPU 真的在工作)
a = torch.randn(1000, 1000).to(device)
b = torch.randn(1000, 1000).to(device)

start = time.time()
c = torch.matmul(a, b)
torch.cuda.synchronize() # 等待 GPU 完成
end = time.time()

print(f"矩阵计算耗时: {(end-start)*1000:.2f} ms")
print("✅ GPU 工作正常!")

运行:

1
2
cd /root/autodl-tmp/cv-project/src
python test_gpu.py

看到 ✅ GPU 工作正常! 和毫秒级的时间 → 环境完全 OK。

第四步:安装你需要的包(图像识别常用)

根据你的具体任务,安装缺少的库:

1
2
3
4
5
6
7
8
9
# 基础图像处理(必装)
pip install opencv-python matplotlib pillow scikit-learn tqdm

# 如果需要预处理大规模数据
pip install pandas numpy

# 特定模型库(按需选择)
pip install timm # PyTorch 图像模型库(ResNet, ViT 等)
pip install ultralytics # 如果要用 YOLOv8 做目标检测

注意:AutoDL 已经预装了 torch, torchvision, numpy,不需要重装。

第五步:开始你的图像识别项目

选项 A:跑教程/复现论文(小白推荐)

  • 把 GitHub 上的代码仓库克隆下来:
1
2
cd /root/autodl-tmp
git clone https://github.com/xxx/xxx.git
  • 按照 README 准备数据,运行训练脚本

选项 B:自己从零开始写

在 src 文件夹创建:

  • train.py:训练脚本
  • model.py:模型定义(ResNet、自定义 CNN 等)
  • dataset.py:数据加载(继承 torch.utils.data.Dataset)
  • config.yaml 或 config.py:超参数配置(学习率、batch size 等)

选项 C:用 Jupyter Notebook 探索(适合调试)

在终端输入:

1
jupyter lab --ip=0.0.0.0 --port=6006 --allow-root

然后在 VS Code 新建 .ipynb 文件,或者通过浏览器访问(需要端口转发)。

第六步:养成好习惯(避免踩坑)

1. 及时保存训练结果

1
2
# 定期压缩重要数据下载到本地(或传网盘)
tar -czvf backup-$(date +%Y%m%d).tar.gz models/ data/

2. 监控显存(避免爆显存)

训练时另开一个终端窗口,盯着:

1
watch -n 1 nvidia-smi

看到 Memory-Usage 接近 100% 时,减小 batch size。

3. 设置 Git(代码不丢失)

1
2
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

把代码 push 到 GitHub,防止实例释放后代码丢失。

你现在应该看到的画面

左侧文件栏:cv-project 文件夹,里面有 data/, models/, src/

底部终端:显示 (base) root@xxx:~/autodl-tmp/cv-project#

Python 解释器:右下角显示 Python 3.8.x (‘base’: conda)

如果都对了,你现在就可以开始写 train.py 训练你的第一个图像识别模型了!

下面给出一份「可抄代码、可落地、可复现」的完整自训手册。
目标:3 周内把「ScreenBERT」从 0 训到线上 WebAgent,每一步都有脚本、命令行、关键超参、踩坑提示。你只需准备 1 张 24G 显卡 + 100 万网页截图(可自动生成)。

目录(一步一步跟做即可)

  1. 环境 & 依赖
  2. 数据工厂:自动生成 100 万「截图+DOM+动作」三元组
  3. 模型代码:双塔→拼接→Transformer(已给完整文件)
  4. 预训练:MLM + 动作分类双任务(脚本+slurm/单机)
  5. 微调:人工 1 万精品轨迹,让模型真正会点按钮
  6. 评测:元素定位 Acc、整链成功率、消融实验
  7. 推理部署:vLLM 4-bit 量化 + FastAPI 服务
  8. 线上自学习:失败案例回流→向量记忆→每周增量训练

一、conda 新建隔离环境

1
2
3
4
5
6
7
# 1. 新建环境(python 3.10 最稳)
conda create -n screenbert python=3.10 -y
conda activate screenbert

# 2. 换国内源(可选,下载快)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch

二、、conda 一键装 PyTorch(已含 CUDA)

torch 需要 CUDA,1.2G有点大,走清华的镜像

1
2
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 \
-f https://mirrors.aliyun.com/pytorch-wheels/cu121

验证

1
2
python -c "import torch, torchvision; print(torch.__version__, torch.cuda.is_available())"
# 应输出 2.5.x True

如果你想“自己用 AI”来实现整套「自动打开网站 → 登录各销售后台 → 下载业务数据」,本质上就是把传统爬虫/RPA 流程里的“人工写规则”环节,尽量换成大模型来“看网页→决策→写代码/点按钮”。
为此,你需要在系统里内嵌 6 个 AI 能力模块,对应 6 个功能点:

1. 视觉解析(Vision Parsing)

功能:把网页截图 + DOM 结构喂给多模态模型,让它“看懂”当前页面有哪些表格、按钮、日期控件、导出入口。

技术:GPT-4o / Gemini-1.5-Pro / Claude-3.5-SONNET 的 vision API,输出 JSON 描述元素坐标、类型、语义。

2. 导航规划(Navigation Planning)

功能:根据“业务目标(下载 2025-12 销售报表)”和当前页面快照,自动输出下一步操作序列,比如「1. 点击【报表中心】 2. 选择【销售明细】 3. 输入日期 2025-12-01~2025-12-31 4. 点击【导出 Excel】」。

技术:ReAct / Reflexion / Chain-of-Thought Prompt,让模型在“思考-行动-观察”循环里自己纠正路径。

3. 动作执行(Action Execution)

功能:把自然语言操作翻译成浏览器可执行命令(点击、输入、滚动、等待下载)。

技术:

– 轻量:Playwright/Selenium 的 CDP 接口;

– 高级:开源项目 seeact、WebArena、MetaGPT-UI,把模型输出的 JSON 直接映射成 page.click(x, y) 或 DOM selector。

4. 异常恢复(Self-healing)

功能:遇到验证码、弹窗、页面改版、按钮位移时,模型能自动重试并改写 selector 或截图找新坐标。

技术:在 ReAct 循环里加入「异常截图 → 重新定位 → 更新操作」分支;也可以外挂一个轻量检测模型(YOLOv8)专门识别验证码类型,再调用第三方打码平台。

5. 数据清洗/对齐(Data Post-processing)

功能:下载下来的文件可能是多语言、多币种、多表头,需要统一列名、汇率、日期格式。

技术:

– 让 LLM 直接读 Excel/CSV,输出“重命名映射表”+“清洗代码”(Pandas 脚本);

– 或者走 ETL 规则引擎,LLM 只负责“生成规则配置文件”。

6. 记忆与反馈(Memory & Feedback)

功能:同一家网站第二次跑时,模型应记住“上次成功的 DOM 路径、日期格式、等待时长”,不再从零推理。

技术:向量数据库存储“站点 ID + 页面哈希 + 成功操作序列”,下次先检索最相似经验;失败时写入“负样本”供后续微调。

一句话版本

“浏览器驱动 + 大模型(视觉+推理)+ 向量记忆 + 轻量 ETL” 四件套即可落地。
展开成最小可跑、又能随时横向扩展的技术栈,如下表:

层级 首选技术 作用 备注/可替换
① 浏览器自动化 Playwright (Python/JS) 真正“打开网页-点击-下载” Selenium/DrissionPage 也能用,但 Playwright 对等待、下载、headless 支持最好
② 视觉+语言模型 GPT-4o / Gemini-1.5-Pro / Claude-3.5-SONNET 看懂页面→规划下一步→生成代码 预算紧可用 Qwen-VL-Chat、CogVLM 本地 8-bit 推理
③ 提示框架 LangChain / LlamaIndex / 原生 ReAct 把“截图→思考→动作→记忆”循环标准化 百行代码也能自己写,LangChain 省脚手架
④ 向量记忆 Chroma/Qdrant(本地)或 Pinecone(云) 存成功轨迹、异常经验,下次 RAG 复用 数据量小直接用 SQLite + sentence-transformers
⑤ 任务/异常调度 asyncio + tenacity(重试)+ APScheduler(定时) 并发、断点续跑、失败回退 heavier 场景换 Celery + Redis
⑥ 数据清洗 Pandas + 让 LLM 生成 python 片段 列名翻译、币种换算、日期统一 量大可转 DuckDB、Polars
⑦ 配置/密钥 pydantic-settings + python-dotenv 管理账号、API-key、代理 容器化时直接挂 K8s Secret
⑧ 部署与监控 Docker + FastAPI(暴露手动触发接口)+ Prometheus 一键镜像、日志、 metrics 单机可先 docker-compose;后面丢 Serverless(阿里云 FC、AWS Lambda)

全自研的话

如果“一行现成的 SaaS / 开源框架都不想用,全部自己从头撸”,那你需要自研的其实只有 * 5 大子系统、16 个功能模块,外加 3 份离线资产。下面给出“从零到生产”的完整自研清单、关键技术点与最小数据结构,方便你直接开 Repo。

16 个必须自研的功能模块

1.浏览器驱动(裸 CDP)

用 Chrome 官方库 github.com/chromium/chromium —— 远程调试端口 9222
自己封装 6 个原子命令:Page.navigate / Runtime.evaluate / DOM.querySelector / Input.dispatchMouseEvent / Input.dispatchKeyEvent / Page.captureScreenshot
下载监听:Browser.setDownloadBehavior 把文件重定向到已知目录,配合 Page.downloadWillBegin 事件拿到文件名。

2.页面快照序列化

  • 截图:PNG → 统一 1280×720,压缩质量 85
  • DOM 精简:只保留可见节点,属性仅 tagName、class、id、href、type、value、bounds(通过 DOM.getBoxModel),体积 <150 KB/页
  • 生成「截图 + DOM-JSON」二元组,作为后续模型的统一输入。

3.视觉编码器(Vision Encoder)

  • 方案 A:CLIP-ViT-B/16 直接出 512 维向量,轻量、可本地跑
  • 方案 B:自训 ScreenBERT:用 1M 中文网页截图 + 对应 DOM 做 MLM 预训练,得到 768 维向量
    输出固定维度的「页面视觉特征」v。

4.动作词汇表 & 动作空间

限定 7 种原子动作,降低模型输出空间:

1
2
3
{ "action_id": 0-6,
"txt": "click|type|scroll|wait|go_back|go_forward|download" ,
"arg": "selector|text|pixels|seconds|NULL" }

5. 小参数语言模型(1.1B–7B)

  • 基座:Qwen2-7B-Instruct 或 Llama3-8B-Chinese
  • 继续预训练:100 万条「网页截图(路径) + DOM + 人类操作序列」自我对抗生成(用现有 GPT-4o 批量标注,再人工抽检 5%)
  • 微调目标:输入「截图路径 + DOM-JSON + 目标描述」→ 输出「下一步动作 JSON」+「是否结束」标志位
  • 训练框架:LLaMA-Factory / Axolotl,2×A100-40G 3 天可收敛。

6. 推理服务(self-hosted)

  • vLLM + FastAPI,int4 量化,batch=8,首 token <600 ms
  • 显存占用 6 GB(7B 模型 int4)→ 单卡 24 GB 可跑 3 并发。

7. 向量索引(自建 ANN)

  • 选 hnswlib 或 faiss IndexHNSW,维度 768/512,M=32,efConstruction=200
  • 内存约 4 字节×维×向量数,100 万条 768 维 ≈ 3 GB RAM
  • 写入:页面视觉特征 v + DOM-文本特征(MiniLM 句向量)做加权拼接,再 L2 归一化。

8. 轨迹回放池(Trajectory Pool)

  • 表结构:
    traj_id | url_hash | goal | success_flag | action_sequence(json) | screenshot_dir | cleaned_csv_path | ctime
  • 本地用 PostgreSQL + JSONB,索引 (url_hash, success_flag);亿级可迁 ClickHouse。

9. 经验召回(RAG)

  • 当前页面 v → ANN 取 Top-5 相似轨迹 → 过滤 success_flag=true → 把「动作序列」拼成 prompt 示例,喂给语言模型做 in-context learning,减少幻觉。

10. 异常检测与自恢复

  • 规则层:
    – 页面 15 s 仍无响应 → 刷新
    – selector 找不到 → DOM diff:把当前 DOM 与上次成功 DOM 做最长公共子序列,定位新增/消失节点,自动生成备选 selector(id→class→xpath→text)
  • 模型层:遇到验证码/弹窗,把局部截图再喂给视觉模型做“分类:滑块/点选/短信”,调用第三方打码平台或内置滑动轨迹生成器。

11. 数据清洗脚本生成器

  • 把下载的 CSV/Excel 第一页 + 列名喂给微调后的 1.1B「代码小模型」,输出一段 Python(仅依赖 pandas、numpy)
  • 沙箱执行:PyPy sandbox + RestrictedPython,禁止 import os/socket 等,超时 30 s
  • 输出标准化 Parquet,schema 统一:date, sku, qty, amount, currency, channel。

12. 版本化落盘(Git LFS + Parquet)

  • 每次任务生成 sales_YYYYMMDD_HHMMSS_{site}.parquet,同批次写 _SUCCESS 空文件
  • 大文件走 Git LFS;元数据(大小、行数、hash)写 manifest.json 一并 commit,保证可回滚。

13. 调度与并发引擎

  • 纯 asyncio + 进程池:浏览器每进程 1 个 CDP 实例,避免锁
  • 任务队列:用 Redis List 实现,LPUSH 下发,BRPOP 抢任务
  • 优先级:goal 级别 0-9,数字越小越先出队。

14. 监控 & 可观测

  • 日志:JSON 格式打到 stdout,Filebeat 收集 → Elasticsearch
  • 指标:prometheus_client 暴露 browser_restart_total、download_bytes、success_rate、avg_step_latency
  • 告警:Prometheus + AlertManager,成功率 <90% 或单任务 >10 min 未结束则飞书/Slack 通知。

15. 配置中心

  • YAML 文件 + pydantic 校验,热更新:watchdog 监听 inode 变化,5 s 内 reload;无需重启浏览器。

16. 一键部署脚本

  • Dockerfile:基于官方 chromium-image,多阶段编译把模型权重、代码、依赖打进去
  • docker-compose:
    – web-agent 服务(含浏览器+模型)
    – redis 服务
    – postgres 服务
    – prometheus + grafana 服务
  • 单台 16 核 32 GB + RTX-4080(16G) 可并发 4 浏览器 4 模型实例,日跑 2000 个站点报表。

3 份离线自建资产

预训练语料(100 万页)

  • 来源:CommonCrawl 中文网页 40 万 + 主流电商后台模板 60 万(用 GPT-4o 自动生成「随机目标+操作轨迹」)
  • 格式:{ “jpg_path”: “xxx”, “dom_json”: “…”, “goal”: “下载 2025-12 销售报表”, “action_sequence”: […] }

清洗规则知识库(5 万条)

  • 列名映射:「订单金额→amount」「實收金額→amount」…
  • 正则集合:日期、币种、千分位、括号负数等
  • 用于微调「代码小模型」+ 校验输出。

词表/符号表

  • 动作空间 7 类、CSS 属性白名单、异常编码表(验证码/滑块/登录失败/无数据)
  • 保证模型输出可解析、日志可追踪。

四、开发顺序(6 周排期)

  • Week1 浏览器裸 CDP 封装 + 截图/DOM 序列化
  • Week2 视觉编码器训练 + 向量 ANN 索引
  • Week3 语言模型微调(1.1B→7B)+ 推理服务
  • Week4 调度+并发+Redis 队列打通,单站点闭环
  • Week5 异常恢复+验证码+自回归测试,成功率>90%
  • Week6 数据清洗+Parquet 落盘+监控告警+Docker 化

五、最小可运行 Git 目录结构

1
2
3
4
5
6
7
8
9
ai-sales-agent/
├─ agent/ # 浏览器驱动、动作执行
├─ model/ # 微调脚本、权重、推理入口
├─ memory/ # ANN 索引、经验池 SQL
├─ etl/ # 清洗沙箱、规则库
├─ scheduler/ # 任务队列、生命周期
├─ monitor/ # 日志、metrics、告警
├─ deploy/ # Dockerfile, docker-compose.yml
└─ tools/ # 数据合成、评测脚本

全部自研意味着:
“浏览器自己驱、模型自己训、向量自己建、清洗自己写、调度自己管、监控自己搭”。
按上面 16 模块 + 3 资产 + 6 周排期推进,你就能得到一条不依赖任何商用/开源黑盒框架、可 100% 源码级掌控的 AI 数据抓取生产线。祝开发顺利,随时卡位可再问我!

有开源的用开源的

下面给你一份“能直接跑、全开源、0→1” 的技术栈速查表——把市面上最活跃、中文支持好、且完全可本地部署的开源项目,对应到前述 5 大子系统。拿着这张表,你就可以「npm install / pip install / docker pull」之后立刻开干,不必自己从头写。

一、浏览器驱动(裸 CDP 不依赖商业包)

  • chrome-remote-interface
    语言:Node.js
    作用:直接对 Chrome 9222 端口发 CDP 命令,等价于自写「Page.navigate / DOM.querySelector / Input.dispatchMouseEvent」
    地址:https://github.com/cyrus-and/chrome-remote-interface
    备注:配合 Puppeteer-core 亦可,但想“零黑盒”就裸用 CRI。
    P* yChromeDevTools(Python)
    同上,只是 Python 封装,适合后端统一用 Python 的团队。

二、视觉-语言模型(开源 & 中文友好)

模型 规模 特点 下载地址
Qwen2.5-VL-7B 7B 中英双语、448×448 高分辨率、OCR 强、MIT 协议 https://github.com/QwenLM/Qwen-VL
CogVLM-17B 17B 10B 视觉 + 7B 语言,幻觉低,支持中文 https://github.com/THUDM/CogVLM
InternVL2.5-8B 8B MMMU>60,文档 / 图表 / 网页理解 SOTA https://github.com/OpenGVLab/InternVL
Kimi-VL-A3B-Thinking-2506 3B 小参数、推理快,MathVista 80.1 分 开源权重已放 HuggingFace

推理框架

  • vLLM + Transformers 即可一键启动;显存不够就用 bitsandbytes 8-bit / 4-bit 量化。
  • batch 推理首 token <600 ms,单卡 24 GB 可跑 7B 模型 int4。

三、向量记忆(RAG 召回轨迹)

  • Chroma
    语言:Python / JS,MIT 协议
    特点:pip install chromadb 即可,本地文件持久化,4 行代码就能 add / query
    地址:https://github.com/chroma-core/chroma
  • Qdrant(Rust 内核,Python SDK)
    如果数据上到千万级,需要过滤 + 分布式,可选 Qdrant;单机用 Docker 一个容器搞定。

四、动作生成 & Agent 框架

  1. LangChain-Community + ReAct 模板
  • 已集成「CDPToolkit」和「OpenAI-like」接口,把 Qwen-VL 当 LLM 节点,自定义 Tool 为「click/type/scroll」即可。
  1. seeact(WebAgent 开源实现)
  • 基于裸 CDP + 多模态模型,直接输出「selector + action」JSON;源码仅 800 行,改改就能接入自己的 Qwen-VL。
  • 地址:https://github.com/nvda/seeact

五、数据清洗 & 落盘

  1. DuckDB / Pandas
  • 轻量 ETL:SQL + Python UDF,单文件 1000 万行无压力。
  1. datasette + Git LFS
  • 把结果写 SQLite,datasette 一键发布成只读 Web UI;大文件走 Git LFS,版本可回滚。

六、调度 & 监控(全开源)

  • 任务队列:Celery + Redis
  • 定时:APScheduler(单机)或 Airflow(集群)
  • 监控:Prometheus + Grafana + AlertManager
  • 日志:Vector → Elasticsearch → Kibana(可选)

总结(直接照抄即可)

  • 浏览器:chrome-remote-interface (JS) 或 PyChromeDevTools (Python)
  • 视觉模型:Qwen2.5-VL-7B / CogVLM / InternVL2.5 均可本地推理
  • 向量记忆:Chroma
  • Agent 框架:seeact(裸 CDP + ReAct)
  • 数据清洗:Pandas + DuckDB
  • 调度/监控:Celery + Prometheus + Grafana

细节梳理

CLIP-ViT-B/16 和 自训 ScreenBERT 的区别

维度 CLIP-ViT-B/16 自训 ScreenBERT(以网页截图-DOM 为输入的 BERT 变体)
1. 训练目标 图文对齐:4 亿图文对对比学习,让图片向量与对应文本向量余弦相似度最大 网页元素-动作预测:给定截图+DOM,预测下一步操作(或元素语义),本质是“网页理解”预训练
2. 输入形式 纯图片(224×224)→ 16×16 Patch → 196 个视觉 Token 双模态:① 截图切块 ② 同级 DOM 结构(节点标签、属性、坐标)→ 同时送进 Transformer
3. 数据规模/领域 通用自然图像(WebImageText 4 亿对) 自建 100 万级网页截图-操作轨迹,领域专注“后台/表单/按钮”
4. 输出向量特点 全局单向量([CLS]),图文空间对齐,零样本分类强 保留细粒度 token 向量,可接 token-level 头做元素定位或动作分类
5. Patch/Embedding 策略 固定 16×16 像素 Patch;无显式文本嵌入 常见做法:视觉仍用 16×16 Patch,DOM 按节点序列化后 WordPiece 分词,再与视觉 Patch 做 Cross-Attention 或拼接
6. 参数规模 视觉编码器 86 M(12 层 768 dim) 可自定,常见 12 层 768 dim,与 BERT-base 相当;若加 Cross-Attn 会略大
7. 适用下游任务 图文检索、零样本分类、CLIP-Adapter 等 网页元素定位、动作生成、RPA 流程理解、DOM 语义抽取
8. 计算代价 纯视觉,O(L²) 只取决于 Patch 数 视觉+文本序列,序列更长(196+DOM_tokens),Attention 计算量更高
9. 微调/继续预训练难度 公开权重丰富,直接加载即可 需自采网页截图-操作对,清洗 DOM、对齐坐标,数据工程量大
一句话总结

CLIP-ViT-B/16 是“通用图文对齐”的纯视觉编码器;自训 ScreenBERT 是“网页专用、视觉+DOM 双模态”的细粒度理解模型,两者目标、输入、输出维度完全不同,在 RPA/WebAgent 场景下 ScreenBERT 更精准,但需要自己从头造数据与训练 pipeline。

《零基础学机器学习》

对话体漫画,用鸢尾花、泰坦尼克把 sklearn 主要接口全跑一遍;每章附 Jupyter 下载链接,照抄就能复现 。
读到:能独立把“数据→训练→评估”三步写进 notebook 即可停。

《Python机器学习手册》

像“菜谱”一样按功能分组:缺失值怎么处理、交叉验证怎么写、网格搜索怎么调……随查随抄 。
读到:把目录做成书签,遇到实际任务先翻对应章节,跑通后再读注释里的“为什么”。

《StatQuest 图解机器学习》

用火柴人漫画把梯度、贝叶斯、交叉熵一口气画明白;零公式也能看懂,再看公式不怵 。
读到:把每章结尾“一张图总结”截屏贴自己笔记,形成思维导图。

《白话机器学习的数学》

用“程序员绫乃和朋友聊天”的方式,把线性回归→sigmoid→交叉熵→反向传播拆成 15 个生活段子;高中数学就能跟上 。
读到:能自己把 sigmoid 的导数手推一遍即可停。

《机器学习(周志华)》

中文领域“西瓜书”,概念最权威;但直接啃易劝退,所以只读到“线性模型、决策树、神经网络”三章,配合上面的漫画和代码反查,就能把“西瓜”落地

《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow》第三版(蜥蜴书)

700 页大合集:传统 ML + 深度学习 + 部署一条线;数学推导先给图再给式子,符合“先跑后懂”节奏 。

读到:前 9 章结束,你就能独立完成“表格数据→清洗→模型→调参→保存”整条流水线;后面深度学习部分留作第二阶段的入口。

下面把“第一步:创建独立 conda 环境”拆成最细颗粒度的 12 步,每一步都给出命令 + 解释 + 常见报错。照着复制即可一次性成功;哪怕从未装过 Anaconda 也能 10 分钟搞定。

前提检查(1 分钟)

Windows:开始菜单搜索 Anaconda Prompt (miniconda3)

如果返回空,先去官网装 miniconda(体积 100 M 以内,比 Anaconda 轻量)。
安装完关闭终端再重开,让 ~/.bashrc 或 ~/.zshrc 里的 PATH 生效。

1.更新 conda 自身

因为 Anaconda 在 2024 年末把 repo.anaconda.com 下的默认频道改成了“需先在线接受 ToS(Terms of Service)”模式。

只要一次性接受即可,后面就不会再弹:

一次性接受 ToS(30 秒)

把官方提示的三条命令一次性跑完即可,每条都要完整复制:

1
2
3
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/msys2

Windows 在 Anaconda Prompt 里执行;macOS/Linux 在终端执行。

执行后会出现 “Terms of Service accepted …” 字样,表示成功。

1
conda update -n base -c defaults conda -y

不更新可能遇到 “Solving environment: failed with initial frozen solve”。

2. 创建干净环境(30 秒)

1
conda create -n ml python=3.11 -y
  • 环境名 ml 可任意换;Python 3.11 是目前(2026-01)与 torch 2.x、scikit-learn 1.5 最稳组合。
  • 不要加 anaconda 元包,否则一次 2 G;我们只装“最小 Python”。

3. 激活环境(Windows/macOS/Linux 通用)

1
conda activate ml

激活后提示符最左边出现 (ml),表示后续 pip/conda 都装在该环境,不会污染系统。

4.配置国内镜像(2 分钟,一次配置永久生效)

1
2
3
4
5
6
7
# conda 源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --set show_channel_urls yes

# PyPI 源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

公司内网可用 –trusted-host 或自建 Artifactory;教育网用户可把 tuna 换成 ustc。

装深度学习核心包(CPU 版,1 分钟)

1
pip install torch torchvision torchaudio
  • 后续有更新 再 pip install –upgrade torch torchvision torchaudio

6. 装科学计算与 Jupyter(1 分钟)

1
pip install numpy pandas scikit-learn matplotlib seaborn jupyter jupyterlab
  • 全部用 pip 安装,版本比 conda-forge 新,且与 torch 依赖冲突最少。
  • 如果公司要求 conda 审计,可改 conda install -c conda-forge …,但解决时间可能 3-5 分钟。

7. 装开发辅助工具(30 秒)

1
pip install black nbstripout torchinfo ipykernel

black:保存时自动格式化 Python 代码。
nbstripout:提交前自动清除 notebook 输出,避免 Git 冲突。
ipykernel:让 ml 环境出现在 Jupyter 内核列表。

8. 把环境注册成 Jupyter 内核(30 秒)

1
python -m ipykernel install --user --name ml --display-name "Python (ml)"

以后无论系统默认 Python 是什么,Jupyter 里都能选 Python (ml) 内核,保证包隔离。

9. 生成 requirements.txt 锁版本(30 秒)

Windows(PowerShell / Anaconda Prompt)

1
pip freeze > requirements.txt

手动删除全部 +cpu,否则下次装错版本。
一行命令就能替换掉,在 (ml) 环境里执行:

10. 测试一键重装(验证可复现)

另开一个终端:

1
2
3
4
5
conda env remove -n ml       # 删掉刚建的环境
conda create -n ml python=3.11 -y
conda activate ml
pip install -r requirements.txt
python -c "import torch, sklearn, pandas, jupyterlab; print('OK')"

能打印 OK 说明锁文件有效,团队其他成员 git clone 后 2 分钟即可复现。

11. 可选:把环境写进 .yml(团队共享更清爽)

1
conda env export --no-builds | Select-String -Pattern '^prefix:' -NotMatch | Set-Content environment.yml

别人只需:

1
2
3
4
# 执行 environment.yml 前需要把 environment.yml 里的 name: base 重命名
# base 是 conda 的保留环境名,不允许覆盖。可以改成ml2或者其他
# 还有把+cpu给去掉
conda env create -f environment.yml

pip 包也会记录在 environment.yml 的 pip: 字段,跨平台更稳。

用 Git 搭建个人博客最流行、最省心的方案是:

“本地 Hexo + GitHub Pages(或 Cloudflare Pages)”——完全免费、无需买服务器、还能绑定自定义域名。下面给出 2025 年验证可行的完整流程,按顺序照做即可上线。

一、准备工作

注册 GitHub 账号, 安装 Node.js(≥18)和 Git,终端执行确认版本:

1
2
node -v
git --version

二、本地初始化博客

全局安装 Hexo 脚手架

1
npm install -g hexo-cli

新建并进入博客目录

1
2
hexo init myblog && cd myblog
npm install

本地预览

1
hexo server          # 浏览器访问 http://localhost:4000 能看到默认页面

三、创建远程仓库

GitHub 新建公开仓库,命名必须为:

<你的GitHub用户名>.github.io

记录仓库的 SSH 地址(后续部署用)。

四、一键部署配置(最简版)

安装 Git 部署插件

1
npm install hexo-deployer-git --save

编辑博客根目录 _config.yml,末尾追加:

1
2
3
4
deploy:
type: git
repo: git@github.com:<用户名>/<用户名>.github.io.git
branch: main # 与仓库默认分支保持一致

生成并首次上传

1
hexo clean && hexo generate && hexo deploy

看到 “Deploy done” 即成功。

浏览器访问 https://<用户名>.github.io 即可看到博客。

五、写作与发布

新建文章

1
hexo new post "我的第一篇文章"

会在 source/_posts/ 生成同名 .md 文件。

用 Markdown 写完保存,执行

1
hexo clean && hexo generate && hexo deploy

代码提交后 30 秒左右线上自动更新。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

0%