Python for MLOps - 第一阶段学习笔记

Python for MLOps - 第一阶段学习笔记

🎯 学习目标

• 巩固 Python 高级语法

• 掌握配置管理与工程化组织方式

• 构建可维护、可配置、具备日志能力的训练脚本框架


✅ 学习模块总结

1. 类型注解(typing)

• 关键类型:List, Dict, Optional, Union, Callable

• 好处:提升代码可读性、支持 IDE 提示和静态检查(如 mypy)

示例:

python 复制代码
from typing import List, Dict, Union

def square_all(numbers: List[int]) -> List[int]:
    return [n**2 for n in numbers]

def get_config() -> Dict[str, Union[float, int]]:
    return {"lr": 0.01, "epochs": 10}

2. 数据类(dataclasses)

• 用 @dataclass 快速定义带默认值的数据结构

• 自动生成 init , repr 等方法

示例:

python 复制代码
from dataclasses import dataclass

@dataclass
class TrainConfig:
    lr: float
    epochs: int
    batch_size: int = 32
    device: str = "cuda"

3. YAML 配置加载(pyyaml)

• 用于从 .yaml 文件中读取训练参数配置

• 搭配 dataclass 实现结构化配置

示例:

python 复制代码
import yaml
from pathlib import Path

def load_config(path: Path) -> TrainConfig:
    with open(path, 'r') as f:
        data = yaml.safe_load(f)
    return TrainConfig(**data)

4. 命令行参数(argparse)

• 支持运行时覆盖 YAML 配置

• 常用于快速试验不同参数组合

示例:

ini 复制代码
from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument("--config", default="configs/config.yaml")
parser.add_argument("--lr", type=float)
parser.add_argument("--device", type=str)
args = parser.parse_args()

5. 日志记录(logging)

• 替代 print,可输出到终端和日志文件

• 支持日志格式统一、自动保存训练信息

示例:

ini 复制代码
import logging

def setup_logger(log_file: Path = None) -> logging.Logger:
    logger = logging.getLogger("uvlearn")
    logger.setLevel(logging.INFO)
    if not logger.handlers:
        ch = logging.StreamHandler()
        logger.addHandler(ch)
        if log_file:
            fh = logging.FileHandler(log_file, mode='w')
            logger.addHandler(fh)
    return logger

6. 项目结构组织

bash 复制代码
uvlearn/
├── configs/           # 存放 YAML 配置
│   └── config.yaml
├── src/
│   ├── config.py      # 配置结构与加载逻辑
│   ├── trainer.py     # 训练逻辑(可模拟/使用 PyTorch)
│   └── utils.py       # 通用工具(日志、contextlib等)
└── train_entry.py     # 项目入口

7. pathlib 的使用

• 用 / 拼接路径

• 可跨平台,简洁直观

示例:

ini 复制代码
from pathlib import Path
log_file = Path("logs") / "train.log"
log_file.parent.mkdir(exist_ok=True)

8. contextlib.contextmanager

• 用函数实现 with 语法的资源管理

• 避免忘记关闭资源或释放连接

示例:

python 复制代码
from contextlib import contextmanager

@contextmanager
def demo_resource(name="默认资源"):
    print(f"[{name}] 资源准备")
    try:
        yield f"{name} 使用中"
    finally:
        print(f"[{name}] 资源清理完成")

📝 明日测验预告

我将准备一道综合题,考察你对以下内容的掌握:

• 类型注解

• dataclass 配置

• argparse 覆盖

• YAML 加载

• 日志输出

• contextmanager 使用

题型风格为"动手补全/分析代码",你会喜欢的 😄

相关推荐
张张123y1 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
happylifetree6 小时前
Python67:核心语法-函数进阶-参数类型(函数作为参数)
python
小羊没烦恼!6 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc7 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI7 小时前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
2601_9628857211 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
李航198311 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程
严谨的麻辣烫13 小时前
静态代理 IP 的出口一致性如何验证?Python 请求检测与异常排查
开发语言·python·http·网络安全
我命由我1234513 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
FITA阿泽要努力13 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent