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

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

相关推荐
qxqycb33 分钟前
python一键反编译工具
python
weixin_BYSJ198741 分钟前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
weixin_BYSJ19871 小时前
flask民族服饰饰品商城小程序---附源码37399
java·javascript·spring boot·python·小程序·django·php
帅气的小峰1 小时前
pybind11与nanobind可以共存吗?如何迁移?
c++·python·cuda·推理引擎
用户298698530141 小时前
从入门到自动化:TXT 转 Word 的在线工具与代码实战方案
人工智能·后端·python
W_326001 小时前
Python-OpenCV:库、环境搭建、图片与摄像头解析
开发语言·图像处理·python·opencv·机器学习
抓不住时间的沙2 小时前
N1搭建Hexo个人博客,部署到Github
python·docker·node.js·debian·github·arm
W_326002 小时前
Python-OpenCV:画布、图形、文字、调色滑动条
图像处理·python·opencv·机器学习·计算机视觉
Promising_GEO2 小时前
新电脑科研环境配置指南:Miniforge + PyCharm + GitHub 从安装到可用
ide·python·pycharm·github·地理
Patrick在香港2 小时前
Claude API 成本直降90%:Prompt Caching 提示词缓存 Python 实战
python·缓存·prompt