数据科学与机器学习开发环境全解析
立即解锁
发布时间: 2025-09-12 01:25:39 阅读量: 11 订阅数: 12 AIGC 


设计生产级机器学习系统
### 数据科学与机器学习开发环境全解析
#### 1. 开发环境概述
开发环境对于数据科学家和机器学习工程师而言至关重要,但在很多公司,开发环境往往被低估和缺乏投资。一个好的开发环境应包含集成开发环境(IDE)、版本控制和持续集成/持续部署(CI/CD)等组件。版本控制对软件工程项目很重要,在机器学习项目中更是如此,因为可更改的元素众多,且需要记录先前运行结果以便后续复现。CI/CD测试套件则用于在代码推送到暂存或生产环境前进行测试。
#### 2. 开发环境的设置
- **版本控制工具**:公司常用临时工具对机器学习工作流进行版本控制,如使用Git进行代码版本控制,DVC进行数据版本控制,Weights & Biases或Comet.ml在开发期间跟踪实验,MLflow在部署模型时跟踪模型工件。Claypot AI正在开发一个可在一处对所有机器学习工作流进行版本控制和跟踪的平台。
- **CI/CD测试套件**:可使用GitHub Actions和CircleCI等工具编排CI/CD测试套件,但CI/CD属于软件工程范畴,本文不过多展开。
- **IDE**:IDE是编写代码的编辑器,支持多种编程语言,可分为原生应用(如VS Code、Vim)和基于浏览器的应用(如AWS Cloud9)。很多数据科学家不仅在IDE中编写代码,还会使用Jupyter Notebooks和Google Colab等笔记本。
| IDE类型 | 示例 | 特点 |
| ---- | ---- | ---- |
| 原生应用 | VS Code、Vim | 功能强大,可本地安装使用 |
| 基于浏览器 | AWS Cloud9 | 可在浏览器中运行,方便使用 |
笔记本不仅是编写代码的地方,还可包含图像、图表、表格数据等,对探索性数据分析和分析模型训练结果非常有用。其具有状态性,程序运行中途失败时可从失败步骤重新运行,处理大型数据集时优势明显。但状态性也可能导致单元格执行顺序混乱,影响笔记本的可复现性,除非有运行顺序说明。
为提升笔记本体验,有一些工具可供使用:
- **Papermill**:可生成具有不同参数集的多个笔记本,还能汇总多个笔记本的指标。
- **Commuter**:是一个笔记本中心,可在组织内查看、查找和共享笔记本。
- **nbdev**:基于Jupyter Notebooks的库,鼓励在同一位置编写文档和测试。
#### 3. 开发环境的标准化
开发环境应至少在团队范围内进行标准化。以下通过一个故事说明标准化的必要性:
- **版本不一致问题**:早期团队成员各自在自己电脑上工作,使用bash文件创建虚拟环境并安装所需包。有时添加包时未指定版本,导致新的拉取请求在不同电脑上运行结果不同。后来规定添加包时必须指定版本,解决了此问题。
- **Python版本问题**:遇到一个奇怪的并发问题,只有在Python 3.8及更早版本中出现。团队成员使用不同Python版本,导致部分人无法复现问题。最终决定统一Python版本,消除了这一困扰。
- **硬件兼容性问题**:有成员更换了带M1芯片的MacBook,部分工具与M1芯片不兼容,设置环境困难。于是团队决定迁移到云开发环境,这样不仅能统一虚拟环境、工具和包,还能让大家使用相同类型的机器。
云开发环境的选择有多种:
- **带云IDE的云开发环境**:如AWS Cloud9(无内置笔记本)和Amazon SageMaker Studio(自带托管JupyterLab),目前SageMaker Studio使用更广泛。但很多工程师会在云实例上安装自己喜欢的IDE,如Vim。
- **带本地IDE的云开发环境**:例如使用本地安装的VS Code,通过Secure Shell(SSH)等安全协议连接到云环境。
虽然工具和包应标准化,但部分公司对IDE标准化持谨慎态度,因为工程师可能对IDE有情感依赖。不过,VS Code是个不错的选择,它便于与云开发实例集成。一些公司选择GitHub Codespaces作为云开发环境,AWS EC2或GCP实例也可通过SS
0
0
复制全文
相关推荐









