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

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

相关推荐
摩羯座-1856903059439 分钟前
爬坑 10 年!京东店铺全量商品接口实战开发:从分页优化、SKU 关联到数据完整性闭环
linux·网络·数据库·windows·爬虫·python
ACERT33344 分钟前
5.吴恩达机器学习—神经网络的基本使用
人工智能·python·神经网络·机器学习
韩立学长1 小时前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
2401_831501732 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
可触的未来,发芽的智生2 小时前
触摸未来2025.10.06:声之密语从生理构造到神经网络的声音智能革命
人工智能·python·神经网络·机器学习·架构
Zwb2997922 小时前
Day 24 - 文件、目录与路径 - Python学习笔记
笔记·python·学习
hui函数2 小时前
python全栈(基础篇)——day03:后端内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
开发语言·后端·python·全栈
动能小子ohhh2 小时前
AI智能体(Agent)大模型入门【6】--编写fasteAPI后端请求接口实现页面聊天
人工智能·python·深度学习·ai编程
SCBAiotAigc2 小时前
huggingface里的数据集如何下载呢?
人工智能·python
AntBlack3 小时前
PyQtInspect : 推荐一个好用的 PythonQT 界面 Debug 工具
python·pyqt