机器学习工具与资源全指南
本文整理机器学习学习和实践中常用的工具、框架、资源,保持持续更新。
1. 开发环境
1.1 IDE 与编辑器
| 工具 | 特点 | 推荐场景 |
|---|
| VS Code | 轻量、插件丰富、Jupyter 集成 | 日常开发首选 |
| PyCharm | 专业 Python IDE、调试强大 | 大型项目开发 |
| Cursor | AI 原生 IDE、代码补全智能 | AI 辅助开发 |
| Jupyter Lab | 交互式、可视化、适合探索 | 数据分析、实验 |
| Google Colab | 免费 GPU、云端 Notebook | 学习、快速验证 |
1.2 VS Code 推荐插件
- Python (Microsoft)
- Jupyter (Microsoft)
- Pylance (智能补全)
- GitHub Copilot (AI 补全)
- GitLens (Git 增强)
- Remote - SSH (远程开发)
1.3 环境管理
| 工具 | 用途 | 命令示例 |
|---|
| conda | 环境 + 包管理 | conda create -n ml python=3.11 |
| venv | Python 原生虚拟环境 | python -m venv .venv |
| uv | 超快的 Python 包管理器 | uv pip install torch |
| Poetry | 依赖管理 + 打包 | poetry add numpy |
2. 深度学习框架
2.1 主流框架对比
| 框架 | 优势 | 劣势 | 推荐指数 |
|---|
| PyTorch | 动态图、调试友好、研究主流 | 部署相对复杂 | ⭐⭐⭐⭐⭐ |
| TensorFlow | 生产部署强、生态完整 | API 复杂、学习曲线陡 | ⭐⭐⭐⭐ |
| JAX | 函数式、JIT 编译、科研前沿 | 学习曲线高 | ⭐⭐⭐⭐ |
| Keras | 简单易用、快速原型 | 灵活性受限 | ⭐⭐⭐ |
2.2 PyTorch 生态(推荐)
# 核心安装(CUDA 12.4)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
关键库:
| 库 | 用途 | 安装 |
|---|
torchvision | 计算机视觉 | 随 torch 安装 |
torchaudio | 音频处理 | 随 torch 安装 |
torchtext | 文本处理 | pip install torchtext |
torch-geometric | 图神经网络 | pip install torch-geometric |
lightning | 训练框架 | pip install lightning |
2.3 Hugging Face 生态(必备)
pip install transformers datasets accelerate evaluate
pip install peft # 参数高效微调
pip install trl # RLHF 训练
核心组件:
| 组件 | 用途 |
|---|
transformers | 预训练模型库(BERT、GPT、LLaMA 等) |
datasets | 数据集加载与处理 |
accelerate | 分布式训练 |
peft | LoRA、QLoRA 等高效微调 |
trl | RLHF、DPO 训练 |
diffusers | 扩散模型(Stable Diffusion) |
3. 数据处理工具
3.1 数据操作
| 库 | 用途 | 特点 |
|---|
| NumPy | 数值计算基础 | 必学 |
| Pandas | 表格数据处理 | 必学 |
| Polars | 高性能 DataFrame | 大数据量首选 |
| Dask | 分布式计算 | 超大数据集 |
3.2 数据增强
# 图像增强
from torchvision import transforms
from albumentations import Compose, RandomCrop, HorizontalFlip
# 文本增强
import nlpaug # 文本数据增强
# 音频增强
import audiomentations
3.3 数据标注工具
| 工具 | 类型 | 特点 |
|---|
| Label Studio | 通用 | 开源、支持多种任务 |
| CVAT | 图像/视频 | 专业 CV 标注 |
| Prodigy | NLP | 高效、可编程 |
| Labelbox | 商业 | 企业级、团队协作 |
4. 可视化工具
4.1 数据可视化
import matplotlib.pyplot as plt # 基础绑图
import seaborn as sns # 统计可视化
import plotly.express as px # 交互式图表
4.2 模型可视化
| 工具 | 用途 |
|---|
| TensorBoard | 训练曲线、模型图 |
| Weights & Biases | 实验跟踪、可视化、协作 |
| MLflow | 实验管理、模型注册 |
| Netron | 神经网络结构可视化 |
4.3 实验跟踪配置
# Weights & Biases
import wandb
wandb.init(project="my-ml-project")
wandb.log({"loss": loss, "accuracy": acc})
# MLflow
import mlflow
mlflow.log_metric("loss", loss)
mlflow.log_artifact("model.pt")
5. 模型部署
5.1 推理优化
| 工具 | 用途 | 特点 |
|---|
| ONNX Runtime | 跨平台推理 | 通用 |
| TensorRT | NVIDIA GPU 优化 | 最快 |
| vLLM | LLM 高效推理 | PagedAttention |
| llama.cpp | CPU 推理 | 量化、本地部署 |
| Ollama | 本地 LLM 服务 | 简单易用 |
5.2 服务化框架
# FastAPI(推荐)
from fastapi import FastAPI
app = FastAPI()
@app.post("/predict")
async def predict(data: InputData):
return model.predict(data)
# Gradio(快速 Demo)
import gradio as gr
gr.Interface(fn=predict, inputs="text", outputs="text").launch()
# Streamlit(数据应用)
import streamlit as st
st.title("ML Demo")
5.3 容器化
# Dockerfile 示例
FROM pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . /app
CMD ["python", "serve.py"]
6. 计算资源
6.1 免费 GPU 资源
| 平台 | GPU | 限制 | 推荐 |
|---|
| Google Colab | T4/V100 | 12h 连续 | ⭐⭐⭐⭐⭐ |
| Kaggle Notebooks | P100/T4 | 30h/周 | ⭐⭐⭐⭐⭐ |
| Lightning AI | 免费额度 | 有限制 | ⭐⭐⭐⭐ |
6.2 付费云平台
| 平台 | 特点 | 适用场景 |
|---|
| AWS SageMaker | 完整 ML 平台 | 企业级 |
| Google Cloud Vertex AI | TPU 支持 | 大规模训练 |
| Azure ML | 微软生态集成 | 企业级 |
| Lambda Labs | GPU 专注、价格低 | 研究/中小团队 |
| Vast.ai | GPU 市场、最便宜 | 预算有限 |
| RunPod | 简单易用 | 快速部署 |
6.3 国内平台
| 平台 | 特点 |
|---|
| 阿里云 PAI | 国内主流、ModelScope 集成 |
| 腾讯云 TI | 完整 ML 平台 |
| 华为云 ModelArts | 昇腾支持 |
| AutoDL | 便宜、简单、推荐 |
| 恒源云 | 价格实惠 |
7. 学习资源
7.1 在线课程(推荐排序)
入门必看:
| 课程 | 平台 | 特点 |
|---|
| 吴恩达机器学习 | Coursera | 经典入门,概念清晰 |
| fast.ai | fast.ai | 实践导向,代码优先 |
| 李宏毅机器学习 | YouTube/B站 | 中文、生动、前沿 |
| Stanford CS229 | YouTube | 理论扎实 |
深度学习:
| 课程 | 平台 | 特点 |
|---|
| 吴恩达深度学习专项 | Coursera | 系统全面 |
| Stanford CS231n | YouTube | CV 圣经 |
| Stanford CS224n | YouTube | NLP 圣经 |
| Hugging Face Course | 官网 | Transformers 实战 |
前沿方向:
| 课程 | 内容 |
|---|
| Stanford CS224W | 图神经网络 |
| Berkeley CS285 | 深度强化学习 |
| Stanford CS25 | Transformers |
7.2 经典书籍
入门:
- 《机器学习》周志华 - 西瓜书,中文经典
- 《统计学习方法》李航 - 理论扎实
- 《Hands-On Machine Learning》- 实践导向
进阶:
- 《Deep Learning》Goodfellow - 深度学习圣经
- 《Pattern Recognition and Machine Learning》Bishop - PRML
- 《Dive into Deep Learning》- 动手学深度学习,代码完整
数学基础:
- 《Mathematics for Machine Learning》- 免费在线
- 《Linear Algebra Done Right》- 线性代数
7.3 必读论文
基础架构:
大语言模型:
论文阅读平台:
7.4 技术博客
| 博客 | 特点 |
|---|
| Lil’Log | 深入浅出的技术总结 |
| Jay Alammar | 可视化讲解 Transformer |
| The Gradient | 深度技术文章 |
| Distill.pub | 交互式可视化 |
| 机器之心 | 中文 AI 资讯 |
8. 数据集与基准
8.1 通用数据集平台
| 平台 | 特点 |
|---|
| Hugging Face Datasets | 最全、易用 |
| Kaggle Datasets | 竞赛数据 |
| Papers With Code Datasets | 论文关联 |
| UCI ML Repository | 经典数据集 |
| OpenML | 自动化 ML 数据 |
8.2 按领域分类
计算机视觉:
- ImageNet - 图像分类基准
- COCO - 目标检测/分割
- LAION-5B - 图文对(扩散模型)
自然语言处理:
- GLUE/SuperGLUE - NLU 基准
- SQuAD - 问答
- CommonCrawl - 大规模文本
语音:
- LibriSpeech - 语音识别
- Common Voice - 多语言语音
8.3 LLM 评测基准
| 基准 | 评测内容 |
|---|
| MMLU | 多任务语言理解 |
| HumanEval | 代码生成 |
| GSM8K | 数学推理 |
| TruthfulQA | 真实性 |
| MT-Bench | 多轮对话 |
9. 社区与资讯
9.1 技术社区
| 社区 | 特点 |
|---|
| Hugging Face Hub | 模型/数据/空间 |
| GitHub | 代码协作 |
| Stack Overflow | 问答 |
| Reddit r/MachineLearning | 讨论前沿 |
| Discord (各框架) | 实时交流 |
9.2 中文社区
- 知乎 - 技术讨论
- 机器之心 - AI 资讯
- PaperWeekly - 论文解读
- 夕小瑶的卖萌屋 - NLP 科普
9.3 保持更新
| 来源 | 用途 |
|---|
| arXiv (cs.LG/cs.CL) | 最新论文 |
| Twitter/X | 研究者动态 |
| Newsletter (The Batch等) | 周报总结 |
| YouTube (Yannic Kilcher等) | 论文讲解 |
10. 实用工具速查
10.1 一键安装脚本
# 基础 ML 环境
pip install numpy pandas scikit-learn matplotlib seaborn jupyter
# PyTorch 深度学习
pip install torch torchvision torchaudio
pip install lightning wandb
# NLP/LLM
pip install transformers datasets accelerate
pip install peft trl bitsandbytes
# CV
pip install opencv-python albumentations timm
# 部署
pip install fastapi uvicorn gradio streamlit onnx onnxruntime
10.2 常用代码片段
# 设置随机种子(可复现)
import torch
import numpy as np
import random
def set_seed(seed=42):
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
torch.backends.cudnn.deterministic = True
# 检查 GPU
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"GPU: {torch.cuda.get_device_name(0)}")
print(f"GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1e9:.1f} GB")
# 自动混合精度训练
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
with autocast():
output = model(input)
loss = criterion(output, target)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
相关笔记