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 使用

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

相关推荐
西柚小萌新1 小时前
【Python爬虫基础篇】--1.基础概念
开发语言·爬虫·python
喵~来学编程啦3 小时前
【模块化编程】Python文件路径检查、跳转模块
开发语言·python
黎明沐白4 小时前
Pytorch Hook 技巧
人工智能·pytorch·python
曲幽4 小时前
Stable Diffusion LoRA模型加载实现风格自由
python·ai·stable diffusion·lora·文生图·diffusers
Tech Synapse4 小时前
迷宫求解机器人:基于Pygame与Q-learning的强化学习实战教程
python·机器人·pygame·强化学习
开开心心就好4 小时前
实用电脑工具,轻松实现定时操作
python·学习·pdf·电脑·word·excel·生活
厚衣服_34 小时前
Python语法系列博客 · 第8期[特殊字符] Lambda函数与高阶函数:函数式编程初体验
开发语言·python
侃山5 小时前
Multi-Query Attention (MQA) PyTorch 实现
pytorch·python
around_015 小时前
python课堂随记
python