Sekkoo的技术博客
个人头像
Sekkoo
OCP认证 数据库 后端开发
后端开发人员,乐于分享技术心得与实战经验。专注于后端开发、数据库、云计算等技术方向,不定期掉落技术认证题库,欢迎交流!
练习题中的所有题目均非来源于官方渠道。它们是通过网络公开信息、匿名用户贡献和社区讨论整理而成,不代表任何官方考试内容。

OCI Data Science Professional 学习笔记

与官方理论课程的章节一致

考试主要内容与权重分布

  1. OCI Data Science 介绍与配置(10%)

    • 包含平台概览、ADS 能力、租户/环境配置等
  2. 工作区的设计与设置(15%)

    • 涵盖项目与 Notebook 管理、Conda 环境创建、OCI Vault 集成、源码仓库管理等
  3. 端到端机器学习生命周期实现(45%)

    • 包括 ML 生命周期全流程、数据访问、准备、可视化、建模、评估与管理、AutoML、模型部署、生成式 AI、LangChain 应用等
  4. MLOps 实践应用(20%)

    • 涉及 MLOps 架构、作业与扩缩容、模型部署、监控与日志、自动化 ML 管道等
  5. 相关 OCI 服务应用(10%)

    • 包括 Spark 应用(Data Flow)、Open Data、Data Labeling 创建与导出等内容

2 Introduction and Configuration 介绍和配置

OCI数据科学云服务模块1:简介与配置


1. 数据科学与AI的发展历史趣味回顾

  • 奥卡姆剃刀(1300年代):哲学家William Ockham提出“简单优于复杂”的理论,为机器学习寻找最简解提供了理论依据。
  • Tobias Mayer(18世纪):通过大量数据收集(研究月亮运动),强调“更多的数据=更准确的结论”,被称为“第一位数据科学家”。
  • Arthur Samuel(1952):首次提出“机器学习”一词;设计了自学下跳棋的程序,机器可根据经验不断优化策略。
  • John W Tukey(1962):预测了电子计算将极大影响数据分析,预示大数据时代的来临。
  • Deep Blue(1997):IBM超级计算机击败国际象棋大师卡斯帕罗夫,显示数据、算力和算法结合的巨大威力。
  • 数据科学一词诞生(2008):LinkedIn和Facebook的数据专家提出“数据科学”概念,强调从大规模数据中挖掘价值。
  • 新冠与大辞职(2021):疫情背景下催生了"大辞职"现象,组织希望用数据科学预测员工流失等业务问题。

2. 数据科学现实价值与课程案例

  • 数据科学广泛用于业务预测、客户体验优化、设备运维等各类场景,并需融合结构化与非结构化多源数据(如传感器、文本、社交媒体、音视频等)。
  • 本课程将以员工流失预测(员工离职)为案例,教你用机器学习模型解决真实业务难题,并在实验环节亲自实践。

3. Oracle AI与云服务整体架构简介

  • 基础层:数据,为上层AI和应用提供根基。
  • AI服务:内置常用机器学习模型,API级调用,无需基础设施管理,可直接处理图片/文本/语音等。
  • 机器学习服务:面向数据科学家,实现模型的开发、训练、部署与管理,可用开源工具栈。OCI Data Science服务是本课重点。
  • 辅助服务:如数据标注(Data Labeling)、商业分析、图分析、数据集成与管理等,为AI/ML服务提供支撑。

4. OCI数据科学云服务核心原则与功能

  1. 加速个体生产力:支持主流开源工具(如JupyterLab),配套弹性算力和环境,无需自架基础设施。
  2. 团队协作:项目(Project)容器管理,便于团队共享资产、复现性和审计能力,提升协同效率和合规性。
  3. 企业级安全与运维:集成OCI安全协议,基础设施全托管,自动运维和升级,用户专注于业务问题。

5. 核心术语与服务组件

  • Project(项目):数据科学团队协作与资产归档的空间,可无限创建。
  • Notebook Session:JupyterLab环境,弹性选择CPU/GPU,已预装主流开源库,可手动扩展。
  • Conda:Python包和环境管理器,方便在notebook内快速切换、安装依赖。
  • ADS SDK:Oracle专为数据科学开发的Python库,简化数据连接、可视化、AutoML、评估和解释等常见流程。
  • Model(模型):在notebook中开发,存入“模型目录(model catalog)”集中管理,各成员共享。
  • Model Deployment(模型部署):将存档模型部署为HTTP接口,支持实时在线预测。
  • Data Science Jobs:定义与运行可复用的ML任务,支持全托管后端计算。
  • OCI Console:浏览器端管理界面,访问notebook和全部服务功能。
  • API & SDK:Python、Java、.NET等多语言SDK和REST API,支持自动化/编程化管理服务。
  • 命令行CLI:非编程用户可用命令行方式直接管理资源。
  • Region(区域):全球分布的数据中心,支持政企与多地业务需求。

6. 课程展望

  • 本节为OCI Data Science概览与基础术语,接下来将讲解如何在云环境中配置与使用该服务,助力贯穿全流程的机器学习开发与实践。

ADS软件开发工具包(SDK)模块


1. 概述与目标

Accelerated Data Science (ADS) SDK 是由数据科学家为数据科学家设计的一套软件工具,旨在覆盖从数据接入、处理、建模、解释到部署的整个机器学习生命周期。其目标为:

  • 将OCI(Oracle Cloud Infrastructure)服务无缝集成到数据科学流程
  • 简化凭证安全存储与服务访问
  • 优化常见的数据科学任务(如特征分析、可视化、调优与自动化算法)

2. 主要功能与优势

  1. 数据接入与连接

    • 支持连接本地存储、对象存储(如Oracle Object Storage)、Oracle数据库(通过安全凭证)、第三方云存储(如AWS S3、Azure、Google Cloud Storage、Dropbox等)
    • 支持NoSQL数据库(通过dataset factory类)
    • 大数据服务无缝集成(如OCI Big Data Service,直接通过HDFS访问)
    • 支持HTTP/HTTPS从网络直接读取数据到DataFrame
  2. 数据可视化与探索

    • 智能可视化:自动为不同数据类型生成合理的可视化图表
    • Feature Types系统:根据测量类型轻松复用/定制可视化
    • 一键生成特征统计、相关性热力图、汇总统计等
  3. 特征工程与推荐

    • ADS Dataset类可自动分析数据,并推荐特征工程步骤,如类别编码、缺失值处理等
    • 提供特征工程建议,提高模型质量
  4. 模型训练与调优

    • 自动机器学习(AutoML):自动尝试多种模型类型并调参,给出最佳结果
    • ADSTuner:灵活进行超参数优化
    • 快速打包模型以便后续部署
  5. 模型评估

    • 支持单模型和多模型对比评估
    • 自动根据问题类型(二分类、多分类、回归)显示适用的指标与图表,无需重复生成/切换
  6. 模型解释性与可解释性分析

    • 提供与具体模型类型无关的解释工具
    • 能做局部(单样本)和全局(整体)可解释性分析:如partial dependence plot、ALE曲线等
    • 支持"what-if"情景测试,观察输入变动如何影响结果
  7. 模型部署与生产化

    • ADS Model Framework支持主流模型(如AutoML、PyTorch、sklearn、TensorFlow等)的快速生产化部署,也支持任意自定义模型
    • 集成OCI日志服务,追踪预测结果与访问情况,满足生产环境监控和合规需求

3. 安装与获取

  • 有两种版本:
    1. 公共版:通过PyPI/GitHub获取,支持标准ADS功能
    2. 专业版:Oracle云服务专属,带AutoML和可解释性功能
  • 安装方式:可在Conda环境、通过pip install等多种方式快捷安装

4. 总结亮点

  • 端到端闭环:从接入、多源数据整合、探索分析、特征工程、训练调优、评估、解释到部署全流程支持
  • 低门槛高集成度:大部分功能只需少量代码即可调用,简化开发难度
  • 自动化与智能推荐:特征工程、模型评价和解释等流程高度自动化
  • 安全合规:集成OCI凭证管理与日志记录,保障生产环境合规

5. 结构化要点整理

  • 目标:一站式解决数据科学实际流程痛点,提升效率
  • 数据接入:多协议多平台支持,安全存取
  • 可视化:智能化、复用性高
  • 特征工程:自动推荐,提升建模质量
  • 模型训练/调优:自动化与手动调优并存
  • 评估与对比:多类型问题自动适配
  • 解释性:模型无关、局部+整体、What-If分析全覆盖
  • 部署/生产化:轻量易用、兼容主流模型、集成日志

数据科学租户(Tenancy)配置基础


1. 核心概念简述

  • Compartments(区隔/隔间)
    • 用于逻辑上组织和隔离OCI云中的资源。
    • 只有被授权的用户组才能访问指定Compartments里的资源。
  • User Groups(用户组)
    • 用户的集合,分配权限后可访问Compartments中的资源。
  • Dynamic Groups(动态组)
    • 由规则动态匹配的资源集合(如notebook session、job run、model deployment等)。
    • 可随着资源变化自动调整成员。
    • 资源作为“主体”,可根据policy直接调用云API。
  • Policies(策略)
    • 通过语法规则授权用户组/动态组在Compartments中对资源的操作权限。

2. 典型配置流程

  1. 用户组与分组
    • 创建用户 → 创建用户组 → 添加用户到用户组
  2. 动态组创建与规则设定
    • 对应规则将数据科学资源自动归入特定动态组
  3. 资源权限策略(Policies)
    • 编写策略授权用户组和动态组访问或管理Compartments内的数据科学及相关资源

3. Compartments(隔间)具体操作

  • 计划好资源如何分隔,随后创建1个或多个compartments
  • 操作流程(在OCI控制台):
    1. 进入Identity → Compartments
    2. 点击“Create Compartment”,填写名称与描述,确定即可

4. 用户组与动态组创建步骤

  • 用户组
    1. 创建用户(填用户名、描述等)
    2. 创建用户组
    3. 将用户加入用户组
  • 动态组
    1. 进入Dynamic Groups,新建分组
    2. 填写组名/描述
    3. 填写matching rules(如匹配特定compartment中的notebook/model/job等资源)

5. Policy(策略)基本语法与核心元素

语法模板
Allow [组名] to [动词(权限级别)] [资源类型] in compartment [compartment名称]

  • 组名:user group或dynamic group名称
  • 动词(Verb/Action)分级,从低到高权权限:
    1. inspect:只允许列出资源(不可见元数据)
    2. read:inspect基础上,可访问元数据与资源本身
    3. use:read基础上,能操作(如更新)资源,通常不包括创建/删除
    4. manage:所有权限,包括创建和删除
  • 资源类型:如data-science family,object-family等
  • compartment名称:实际隔间名称

6. 数据科学常见必需策略示例

  • 允许用户组管理指定compartment下所有数据科学资源:
    Allow [user_group] to manage data-science-family in compartment [compartment_name]
    
  • 允许动态组管理数据科学资源:
    Allow [dynamic_group] to manage data-science-family in compartment [compartment_name]
    
  • 监控与日志相关:
    Allow [user_group] to read metrics in compartment [compartment_name]
    Allow [dynamic_group] to use log-content in compartment [compartment_name]
    Allow [user_group] to manage log-groups in compartment [compartment_name]
    Allow [user_group] to use log-content in compartment [compartment_name]
    
  • 网络与对象存储等常见场景(自定义网络/对象存储访问):
    Allow service datascience to use virtual-network-family in compartment [compartment_name]
    Allow [user_group] to use virtual-network-family in compartment [compartment_name]
    Allow [dynamic_group] to use virtual-network-family in compartment [compartment_name]
    Allow [user_group] to manage object-family in compartment [compartment_name]
    Allow [dynamic_group] to manage object-family in compartment [compartment_name]
    

7. 操作流程高效回顾

  • 在OCI控制台逐步创建/配置Compartments、User、Group、Dynamic Group和Policy(尤其注意区分user group与dynamic group的不同规则与授权)。
  • Policy建议直接使用Manual Editor批量粘贴策略语句,便于维护和复用。

8. 总结与实操建议

  • 熟悉Compartments、用户组、动态组、策略四要素及其关系
  • 精确理解policy语法与权限粒度,合理授权,确保数据科学项目既高效又安全
  • 针对实际场景(如访问日志、监控、外部服务等)准备好补充策略
  • 掌握OCI管理后台操作路径,结合标签和OCID做好资源管理和归档

使用OCI Resource Manager快速配置Data Science租户


1. 背景说明

  • 手动配置租户(Tenancy)较为繁琐,涉及用户组、动态组、策略等反复设置。
  • 使用Oracle Resource Manager(ORM)中的“Data Science Service模板”,可“一键式”自动创建常用所需资源,简化配置流程。

2. Data Science Service模板自动化内容

  • 自动创建内容包括:
    1. 用户组(User Group):名称可自定义
    2. 动态组(Dynamic Group):名称可自定义,匹配规则覆盖三类Data Science服务资源
      • datasciencenotebooksession(笔记本会话)
      • datasciencemodeldeployment(模型部署)
      • datasciencejobrun(作业任务)
    3. 策略(Policy):名称可自定义,自动生成以下授权语句:
      • 允许用户组管理该compartment下所有数据科学资源(data-science-family)
      • 允许动态组管理compartment下数据科学资源
      • 允许用户组读取compartment内指标(metrics)
      • 允许动态组使用compartment下的日志内容(log-content)

3. Resource Manager(ORM)堆栈(stack)操作流程

  1. 创建Stack(堆栈)
  2. 选择模板
    • 来源选template,进入“服务”目录选择“Data Science”,点击“选择模板”
  3. 选择目标Compartment
    • 即将创建用户组、动态组和策略的隔间
  4. 填写相关变量(如资源名称等)
  5. 执行堆栈(Apply)
    • 选择“创建后立即运行”,等待任务自动完成
  6. 添加用户到新建的用户组
    • 该步骤为手动,将需要的用户添加到自动创建的用户组中

该模板和堆栈操作目前仅在OCI控制台上可用,后期支持自定义或修改生成的stack内容。


4. 进阶:可用自定义Terraform脚本

  • 除了使用控制台模板,还可以从官方GitHub仓库下载/复用Terraform自动化脚本,自由定制Data Science基础设施的资源设置。

5. 操作简要步骤(回顾)

  1. Resource Manager → Stacks → Create Stack
  2. Origin选模板 → Service选择Data Science → 选模板
  3. 选compartment → 下一步 → 填变量 → 下一步
  4. 创建并立即apply
  5. 添加用户到用户组
  6. 可选:在GitHub获取相关Terraform脚本增强定制化能力

6. 总结

  • 利用Resource Manager的Data Science模板,租户配置快速标准化,避免繁琐手工操作。
  • 自动生成核心用户组、动态组、必需策略,专为数据科学服务场景预置优化。
  • 支持后期补充配置、堆栈编辑,亦支持与自定义Terraform脚本联用,满足不同团队的灵活需求。

数据科学网络架构基础(Networking for Data Science)


1. 关键云网络组件简介

  • VCN(Virtual Cloud Network,虚拟云网络)
    • 在Oracle数据中心自定义的虚拟私有网络
  • Subnet(子网)
    • VCN内部的逻辑分段,承载实例的VNICs
  • VNIC(虚拟网络接口卡)
    • 附着在实例上的虚拟网卡,决定实例如何网络通信
  • DRG(Dynamic Routing Gateway,动态路由网关)
    • 用于VCN与本地网络或跨区VCN的私网流量互通(支持VPN/专线FastConnect)
  • NAT Gateway
    • 提供无公网IP资源的出网访问能力,屏蔽入站流量
  • Service Gateway
    • 支持私网内资源访问Oracle服务网络下的服务(如对象存储),无需互联网或公网IP

2. 网络组件关系与数据科学资源

  • VCN为网络总管,内部划分subnet
  • subnet中承载VNIC,VNIC连到各种实例(如notebook、部署、作业等)
  • 网络路由、策略、DHCP等统一在subnet层管理

3. Data Science相关资源映射

  • 主要数据科学计算资源类型(统称“workloads”):
    • Notebook session(笔记本会话)
    • Job/Job run(任务/任务执行)
    • Model deployment(模型部署)
  • 这些workload往往需要访问外部资产(如代码、数据、库、密钥、日志等),资产可能在互联网或内网。

4. 网络接入两大模式

  • 默认网络(Default Networking)

    • 实例通过次VNIC自动附着到服务预配置的VCN subnet
    • 出网支持:NAT gateway(可访问公网);Service gateway(可访问OCI服务)
    • 适合只需连互联网和OCI服务的场景,无需手工创建网络资源和配置policy
  • 自定义网络(Custom Networking)

    • 用户自有VCN & subnet,需提前创建
    • 创建数据科学资源时,指定要用的subnet,资源通过二级VNIC附加连到该subnet
    • 适合需要访问专有网络资产(如企业Git/本地数据库等)的场景
    • 需协作网络管理员配置网络与策略

5. 网络配置向导快速设置步骤

  1. 进入 Networking → Virtual Cloud Networks
  2. 启动 VCN wizard → 选择“Create VCN with Internet Connectivity”
  3. 填写VCN名称,其余选项按需调整
  4. 点击 Next → Create,稍等片刻即自动完成所有资源创建
  5. 资源建立后可在控制台页面查看
  6. 如果用OCI Resource Manager全局模板初始化租户,则VCN通常自动创建,无需重复此步

6. 实操与注意事项

  • 初学、Demo或仅需连OCI服务场景推荐使用“默认网络”模式,最快完成部署
  • 需要访问内网/企业资源或高阶网络隔离时选“自定义网络”并提前沟通网络与安全管理员
  • 应根据实际业务需求,结合租户Policy策略,实现对网络资源的合规接入与安全管控

数据科学环境下OCI API认证方式


1. 背景说明

  • 数据科学服务中的资源(如notebook会话、作业、模型部署)可运行自定义代码,常需与其他OCI服务(如对象存储、数据流等)集成,访问API。
  • 调用OCI REST API前必须“认证”(authentication),即让OCI识别你的身份。
  • 认证≠授权。授权(权限管理)已在上一节讲解,本节专注“如何证明你是谁”。

2. 认证入口与常见接口

  • 主要认证用在:
    • ADS SDK
    • OCI Python SDK
    • OCI命令行(CLI)

3. 认证方式一:资源主体(Resource Principal)

  • 定义:Resource Principal是OCI的IAM特性,允许云资源(如notebook、作业、部署)本身成为API的“主体”,具备自动认证身份并访问资源的能力。
  • 机制
    • 系统为每个资源自动分配数字证书并定期轮换,无需在代码中显式留存或上传凭证。
    • 推荐用于自动化流程(如作业运行),安全性高。
    • 默认在数据科学服务(如notebook/session/job等)中可用。
    • 需配合动态组与策略授权,实现自动认证+自动授权。
    • 注意:采用这种方式时,认证Token有15分钟缓存,如策略或组变更需要等缓存失效(15分钟)后生效。
  • 接口调用指定方式:不同SDK/CLI设置资源主体方式略有差异,需查看接口具体用法。

4. 认证方式二:个人配置文件及API密钥(config+API Key)

  • 定义:即IAM用户通过config配置文件和API密钥进行认证,适用于本地或有交互界面的环境(如notebook)。
  • 步骤
    1. 在Notebooks的OCI目录下上传/生成oci_config配置文件;
    2. 配置相关profile信息,上传/关联.pem密钥文件;
    3. 可通过“api_keys样例notebook”直接生成/设置config和key。
  • 场景:适用于需要以个人IAM身份访问,或者需要手动管理认证的场合;也是部分SDK/CLI的默认认证方式。

5. 两种方式的对比与选择

资源主体(Resource Principal) 配置+API Key方式
认证主体 资源本身 IAM用户本身
推荐场景 自动化、无界面作业、生产安全 练习、交互探索、个人开发
优势 高安全、自动轮换、无需人为上传凭证 灵活,“本地化/自定义”认证
配置难度 零配置,自动启用 需手动传输配置与密钥
缺点 仅适用于有资源主体能力的资源 安全性需自己管理,密钥被泄隐患

6. 常见注意事项

  • 资源主体机制推荐为数据科学平台主流认证方式,特别是需要自动化、批量调度等无交互场景。
  • 配置/api key方法适合个人调试/实验环境,尤其熟悉传统云API流程的开发者。
  • 授权策略与认证方式配合,确保授予的权限符合资源+用户业务诉求。
  • 资源主体变更策略后,最长需等15分钟缓存失效后生效。

3 工作空间设计与环境搭建——数据科学项目(Project)基础与管理


1. 数据科学项目的定义

  • 项目(Project):数据科学团队围绕特定业务问题或用例展开协作的工作空间。
    • 作为所有数据科学资源(如notebook session、模型等)的归属容器。
    • 支持团队成员共同管理、归档、标注、文档化并追溯相关工作。

2. 项目的创建方法

  • 方法一:OCI控制台(Console UI)

    1. 登录租户,打开导航菜单。
    2. 点击“Analytics and AI” → “Machine Learning” → “Data Science”。
    3. 点击“Create Project”,选择目标compartment(资源隔间)。
    4. 建议填写唯一的项目名称(未填写则自动生成包含时间戳的名称)。
    5. 可选填写简要描述,有助于团队成员理解项目背景。
    6. 可添加标签(tag namespace、key、value),便于资源快速检索与追踪。
    7. 选择“View Detail page”可直接查看新建项目详情。
    8. 点击Create完成创建,后续可在项目中创建并管理notebook、模型等资源。
  • 方法二:ADS SDK

    1. 通过ProjectCatalog对象,调用create_project方法,传入compartment ID等参数。
    2. 一般可用notebook session内置环境变量快速获取当前compartment ID。
    3. 适合自动化、大批量或代码驱动场景下的项目生成。

3. 项目管理(查看、编辑、删除)

  • 查看:所有项目在“Project List”页面统一展示,点击名称可查详情。
  • 项目信息(元数据)包括:显示名、描述、OCID、创建时间/人、标签等。
  • 编辑
    • 仅允许修改:名称、描述、标签(tag)。
    • 控制台界面可直接编辑,标签需在“更多操作”中单独管理。
  • 删除项目
    • 项目必须为空(所有资源先删除)后方可删除。
    • 删除时需输入项目名以确认操作防误删。
    • 删除后,项目状态变为“Deleting”或“Deleted”,可根据状态筛选显示仍然存活的项目。
    • 支持在列表页面或项目详细页面执行删除。

4. 场景与操作简述

  • 创建项目流程:进入Data Science模块→点击“Create Project”→输入名称、描述、标签→确定→自动跳转到项目视图。
  • 编辑项目可随时在项目页面或列表中进行,但仅限修改名称/描述/标签。
  • 删除项目需先删除所有挂靠的数据科学资源(notebook、模型、job等),符合安全性和资源整洁需求。

5. 总结要点

  • 项目(Project)是团队协作与资源管理的基础,可有效归组织数据科学活动、资产及文档。
  • 支持多种创建与管理方式(控制台、ADS SDK),方便不同技术背景与协作场景。
  • 元数据与标签构建了规范、便于追踪的资源体系。
  • 删除操作有防误机制,需手动确认且清空所有资源。

3 Workspace Design and Setup 工作区设计与设置

OCI Data Science Notebook Session(交互式计算会话)详解与管理


1. Notebook Session定义

  • Notebook session 是OCI Data Science中为用户提供的 JupyterLab交互式建模与开发环境
  • 服务全托管(fully managed),用户无需管理底层计算与存储资源调度、补丁或生命周期。
  • 支持CPU/GPU多种形态,支持持久化存储(代码、数据、环境)。

2. 核心优势

  • 零运维压力:计算、存储、镜像、补丁全部由云服务自动完成。
  • 灵活可扩展:可根据需要选择/调整多种计算shape(AMD/Intel CPU、Nvidia GPU),并配置块存储(50G~10TB)。
  • 网络自定义:既支持默认网络(面向互联网与OCI服务访问),也支持自定义VCN与子网。
  • 会话持久化:Notebook关闭/恢复时,块存储(block volume)保留,数据与代码不会丢失。

3. 创建Notebook Session流程(以控制台为例)

  1. 前提:已创建好所属项目(Project)。
  2. 打开目标项目详情页面,点击“Create notebook session”。
  3. 选择compartment、填写名称(可选)、选择所需compute shape。
  4. 配置块存储容量(50~10,240GB)。
  5. 选择网络类型(默认或自定义,可指定VCN/subnet)。
  6. 可添加标签便于管理检索。
  7. 点击“Create”。等待数分钟,激活后显示“Open”按钮。

4. Notebook Session生命周期管理

  • 查看:所有Notebook session汇总在项目的notebook会话列表页面。
  • 详情:每个会话含显示名、OCID、创建者/时间、计算形态、存储大小、网络、标签等。
  • 可编辑字段:仅“显示名称”可编辑。
  • 标签变更:通过详情页的“更多操作”管理。
  • 激活/资源伸缩
    • 未激活状态可点击“Activate”,可选择调整计算/存储/网络资源,实现按需弹性伸缩;
    • 激活过程约需几分钟,状态从“updating”到“active”。
  • 停用/省成本
    • 点击“Deactivate”,关机释放计算资源但保留块存储;
    • 重新激活时系统会分配新计算实例并自动挂载原块存储,继续开发。
  • 删除
    • 需输入会话名确认;
    • 删除时所有未备份/提交的文件及数据会随计算实例与块存储一同永久移除。

5. 注意事项&补充

  • Notebook session激活时的唯一可编辑字段是“显示名称”,其它属性设定后不能临时更改。
  • 停用后保留数据盘,方便省资源成本与断点恢复,不建议长期让无用notebook激活状态。
  • 会话界面可监控CPU、内存、网络流量等资源指标,便于性能分析与调优。
  • 安全提示:养成及时备份重要代码与数据的习惯,避免误删时丢失成果。
  • 除控制台外,也可用ADS SDK等方式程序化创建和管理notebook session。

6. 小结

  • Notebook session是OCI Data Science最核心的交互开发环境,具备高弹性和免运维优势;
  • 支持灵活配额和自动资源伸缩、网络隔离策略;
  • 管理操作(查看、编辑、激活、停用、删除)易于上手、安全性强,但需注意数据备份。

JupyterLab在OCI Data Science中的用法与核心特性


1. JupyterLab简介与角色

  • JupyterLab 是主流开源的交互式数据科学开发环境,Web界面,支持notebook、脚本、终端、富文本编辑等多种开发活动。
  • 在OCI Data Science平台,notebook session 使用JupyterLab作为主要交互界面,无需额外学习成本,便于数据科学家上手。
  • 支持丰富文件格式(如.ipynb、文本、CSV、JSON、Markdown、PDF、图片、Vega可视化等)。

2. OCI Data Science环境下JupyterLab专属增强

  • 菜单结构与开源JupyterLab一致,但有三大补充功能:
    1. Launcher(启动器):一键新建notebook、终端、环境探索器、样例notebook等。
    2. Environment Explorer(环境浏览器):可视化管理和切换conda环境(下一节详解)。
    3. GitHub扩展:内置Git工具,代码管理/版本控制集成(第9课讲解)。

3. 界面结构与主功能区

  • 顶部菜单栏:提供常用操作、快捷键、自定义命令入口。
  • 左侧边栏(自上而下):
    • 文件浏览(File Browser):目录、文件的浏览、打开、上传、重命名、删除。
    • 终端/内核会话管理:一键关闭无用进程。
    • Git管理扩展(集成版)。
    • 命令面板:检索并运行所有JupyterLab命令。
    • Property Inspector:编辑属性(notebook专用)。
    • 打开标签页一览。
    • Table of contents:自动生成并高亮notebook大纲。
    • 扩展管理/第三方插件包。
  • 主工作区:可拆分、并列、浮动多个文件或数据面板,实现高效多窗口协作。
  • 右侧栏:如属性编辑面板等。

4. 各类文件及功能特性

  • Notebook(.ipynb):交互运行单元格、支持Python/Mardown两种类型、可拖拽调整顺序、支持合并/分割单元格。
  • Console:临时代码试验板,支持丰富输出,Python变量状态可交互刷新。
  • Terminals:完整Linux命令行,已预装conda、git、oci-cli等命令行工具。
  • 多视图编辑器:可同时对一个文件用不同方式打开,实时同步更新。

5. 典型操作流程(实用小结)

  • 新建文件:点击Launcher/加号,选择Python3 Kernel新建notebook,或终端/文本文件等。
  • 运行单元格:可以用Run菜单、三角按钮、快捷键Shift+Enter。
  • 重命名:右键或顶部菜单直接修改名称。
  • 单元格类型切换:菜单直接选code/markdown,实现文档代码混排。
  • 编辑菜单:支持合并/拆分单元格,插入行、批量操作等。
  • Kernel管理:可随时更换执行内核,支持Python、R等。
  • 变量监视:调用Variable Inspector扩展可侧旁实时查看变量内容。
  • 并列/拖放:多个tab可拖拽实现并排显示,智慧窗口布局。
  • 数据可视化:内置支持csv、图片、Vega/JSON等多种数据预览。
  • 上传/下载文件:文件浏览区可直接拖拽,也可右键新建/上传。
  • 显示代码行号、折叠与展开、主题更换:通过View菜单实现。
  • 帮助菜单:集成官方文档、FAQ、命令参考。

6. 特殊说明与控制台顶栏定制

  • 顶栏Oracle Logo可一键返回云控制台主页。
  • 会话名/剩余使用时间/帮助/登出等快捷项。
  • 默认1小时无操作自动退出,可手动延长最多至24小时。

7. 小结

  • JupyterLab为数据科学家在OCI平台上的主力开发及交互工具,兼容主流工作流,云端管理更易协作与资产管理。
  • 控制台定制了环境管理、Git扩展等,极大提升团队效能。
  • 掌握菜单与快捷键、窗口布局及扩展功能,可大幅提高数据科学开发效率与体验。

OCI Data Science平台下 Conda 环境与 Environment Explorer


1. Conda环境的优势与用途

  • 环境隔离:可为不同任务(如计算机视觉、线性回归等)分别准备最合适的库与依赖,轻松切换,避免大型库混用、资源浪费。
  • 团队协作:某个人配好的conna环境配置可直接分享,团队成员复用,无需重复环境搭建。
  • 生产一致性:训练用的conda环境可直接用于模型部署和Job运行,保证开发、训练、部署环境完全一致,实现“携带环境发布”。
  • 可复现性:conda环境记录了所有依赖及版本,便于科学复现实验结果。如果某次更新后模型有异常,可回溯加载原始环境精准排查。

2. Environment Explorer(环境管理器)简介

  • 作用:图形化管理和运维Conda环境。
    • 浏览、搜索现有环境
    • 查看细节(卡片视图 or 列表视图)
    • 分类/过滤(如仅GPU环境、已废弃环境等)
  • 集成位置:JupyterLab左侧侧边栏专属扩展。

3. Conda环境的三种类型

  1. 数据科学Condas(Managed/curated by Oracle)

    • 官方预置,多为主流算法、任务或行业快速上手环境。
    • 如:PyTorch、TensorFlow专用环境,医疗健康、EDA等领域组合包。
    • 可过滤查询,仅显示这类官方环境。
  2. 发布型Conda环境(Published Conda Environments)

    • 由用户自定义构建、发布及管理。
    • 存储于对象存储bucket,实现团队共享、跨notebook会话复用、模型复现。
    • 可直接用于作业调度和模型线上部署。
  3. 已安装Conda环境(Installed Conda Environments)

    • 已在当前notebook会话/块存储上安装的所有环境。
    • 可由官方环境、已发布环境、纯自定义配置混合组成。
    • 停用再激活notebook时,环境随数据盘自动复原。

4. 实践建议与环境生命周期

  • 每个notebook session需至少装备一个Conda环境。
  • 可以随时在Environment Explorer中搜索、切换和安装环境。
  • 只需一次配置,环境与软件版本可完整复用于团队与生产流。
  • 关机/重启notebook,Conda环境持久保留,不变。

5. 小结

  • Conda环境是数据科学协作与可复现的基石,有效解决依赖冲突和跨阶段一致性问题。
  • Oracle Data Science服务提供图形化环境管理器(Environment Explorer)极大提升环境切换、共享和复现效率。
  • 推荐团队根据任务特性,合理配备、复用并发布conda环境,将研发、训练、部署三环节整合于同一技术体系内。

Oracle Cloud Infrastructure Data Science Service:Conda 环境介绍


1. 概述

Oracle Cloud Infrastructure Data Science Service 提供了一系列为数据科学量身定制的 Conda 环境(Conda packs)。这些环境是基于开源软件预先构建的,用户可以直接下载后按需定制,免去从零手动搭建 Conda 环境的复杂流程。所有环境都可通过 Jupyter Lab 的 Environment Explorer 访问,并默认集成了 OCI Python SDK 以及 ADS(Accelerated Data Science)SDK。


2. ADS 版本与 Oracle Labs AutoML

  • 大多数 Conda 环境内置 Oracle ADS 公共版本(不含 AutoML 和模型可解释性功能)。
  • 部分环境(如通用 CPU/GPU 机器学习环境)则包含 Oracle Labs 的 AutoML 与模型可解释性工具。

3. Conda 环境类型

  • 按应用分类:如专为 ONNX、PyPGX、PySpark 等特定软件定制的环境。
  • 按用例分类:如计算机视觉(Computer Vision)、数据探索与处理(Data Exploration & Manipulation)、金融服务(Financial Services)等场景定制的环境。
  • 这些 Conda packs 预装了最佳开源组件,以实现特定任务。

4. Conda 环境家族与命名规范

  • Conda 环境根据 Python 版本及架构归类。例如,自然语言处理(NLP)环境同时有 CPU 架构、Python 3.7 的不同版本,版本差异体现在内含软件。
  • 命名规范举例
    • 按应用:软件名 + 版本 + 架构 + Python版本。如:PyTorch 1.10 for GPU on Python 3.7
    • 按用例:任务名 + 架构 + Python版本。如:Data Exploration and Manipulation for CPU on Python 3.7
  • 部分旧版环境未完全遵循新命名规则。

5. 主要流行的 Conda 环境介绍

  1. 计算机视觉(Computer Vision)

    • 用途:图像/视频预处理、目标检测、跟踪、拼接、压缩、人脸识别、眼动追踪等
    • 主要库:OpenCV、scikit-image、Pillow、PyTorch
  2. 数据探索与处理(Data Exploration and Manipulation)

    • 用途:数据集导入、可视化和流式处理
    • 主要库:ADS、pandas、pandaparallel、dask、matplotlib、seaborn、plotly、bokeh、Kafka-python
  3. 通用机器学习(General Machine Learning)

    • 用途:数据处理、机器学习、AutoML、模型可解释性
    • 主要库:xgboost、lightgbm、Keras、TensorFlow、Oracle AutoML(部分环境)、MLX(模型解释库)
  4. 自然语言处理(Natural Language Processing)

    • 用途:文本提取、关键词、词性标注
    • 主要库:nltk、keybert、pytorch-lightning、simpletransformers
  5. ONNX 环境

    • 用途:模型格式通用互操作与推理
    • 主要库:ONNX、ONNX Runtime
    • 能力:模型格式转换与跨平台部署,支持不同原始训练框架的模型
  6. Oracle 数据库集成环境

    • 用途:ETL、批量处理、数据库查询
    • 主要库:ipython-sql、oracle-ads、SQLAlchemy
    • 支持 Oracle、MySQL、SQLite 等多库
  7. PyTorch 环境

    • 用途:深度学习(计算机视觉、NLP、通用ML)
    • 特点:支持 Intel CPU 加速(如 daal4py,oneAPI)
  8. PySpark 环境

    • 用途:分布式大数据处理和机器学习
    • 主要库:MLlib、sparksql-magic
  9. TensorFlow 环境

    • 用途:深度学习模型训练与部署
    • 主要库:TensorFlow、TensorBoard

6. 总结与要点

  • Oracle 管理的 Data Science Conda 环境为不同用例定制,涵盖从数据处理、数据可视化到模型开发和部署全流程。
  • 这些环境通过预装主流开源库,极大提升了上手效率和开发便利性。
  • 部分环境额外集成 Oracle 自研 AutoML 和模型可解释性支持,适合自动化建模和模型审核。
  • 借助标准化的命名与归类,用户可快速选择合适环境,更高效地进行数据科学项目开发。

Oracle Cloud Infrastructure Data Science Service:odsc 命令行工具管理 Conda 环境


1. 概述与复习

  • Conda 环境本质:即为一组预装的软件集合,便于数据科学任务的环境隔离与管理。
  • 分为两类:Oracle 团队官方维护的 conda packs,以及用户可自行发布的自定义 conda packs。
  • 除 GUI 的 Environment Explorer 外,odsc 命令行工具为 power user 提供了更灵活的管理能力。

2. odsc 命令的核心功能

常见操作包括:

  1. 浏览(browse/list)

    • 获取 YAML 格式的环境详情(包括名称、描述、关键库、slug)。
    • 列举当前 Notebook 已安装的环境(加参数 local)。
    • 浏览已发布的环境(加参数 override,需先配置对象存储)。
  2. 搜索(search)

    • 没有专门的命令。可结合 odsc conda list 与命令行工具(如 grep、awk)进行。例如:
      • odsc conda list | grep -E 'name:|slug:'
    • 可以灵活用正则表达式、文本处理工具抽取关键信息,实现复杂查询。
  3. 安装(install)

    • 安装官方或自定义(已发布到对象存储)的 conda 环境。
    • 基本命令:odsc conda install --slug <slug名>
    • 若需安装自定义环境需加 --override
  4. 克隆(clone)

    • 拷贝并新建环境,适用于大改前保护原始环境。
    • 命令示例:odsc conda clone --from-environment <源slug> --env <新名称>
  5. 修改(modify)

    • 通常直接激活并操作 conda 环境,如升级包。
    • 步骤:
      • conda activate /home/datascience/conda/<slug>
      • python3 -m pip install oracle-ads --upgrade (举例升级 ADS)
  6. 发布(publish)

    • 将自定义/调整后的环境推送到对象存储,便于共享、复用、模型部署。
    • 需先用 odsc conda init 绑定对象存储 Bucket。
    • odsc conda publish --slug <slug名>
  7. 删除(delete)

    • 清理不再需要的环境以释放空间。
    • 示例:odsc conda delete --slug <slug名>
  8. 创建(create)

    • 支持根据 YAML 文件定义新环境。
    • 命令:odsc conda create --file <manifest.yaml>
    • 默认会安装 /opt/base-env.yaml 中基础包,若用 --empty 可忽略基础包。

3. odsc 管理流程举例

  1. 查看所有环境
    odsc conda list
  2. 仅看本地已安装环境
    odsc conda list --local
  3. 查环境 slug/name
    odsc conda list | grep -E 'name:|slug:'
  4. 安装环境
    odsc conda install --slug <slug名> [--override]
  5. 克隆环境并升级特定库
    • odsc conda clone --from-environment <slug> --env <新名>
    • conda activate /home/datascience/conda/<新slug>
    • python3 -m pip install <包名> --upgrade
  6. 发布到对象存储
    • odsc conda init --bucket_namespace <命名空间> --bucket_name <bucket名>
    • odsc conda publish --slug <slug>
  7. 删除一个环境
    odsc conda delete --slug <slug>

4. 高级集成与实战技巧

  • 与 Unix 命令链条结合(如 grep/awk/perl):适合构建复杂的过滤、批量管理环境工作流。
  • 环境定制化:通过 YAML 文件与 odsc create/modify/clone/publish 形成完整的定制-共享-复现闭环。
  • 对象存储的必要性:发布和共享自定义 conda 环境前,需初始化对象存储位置(Bucket)。

5. 总结与要点

  • odsc 命令行为 Oracle Data Science 环境中 Conda 管理提供了全生命周期支持。
  • 支持浏览、安装、克隆、发布、删除以及 YAML 文件创建等丰富操作。
  • 灵活结合 Linux 命令行生态,可满足自动化和批量管理的高阶需求。
  • 配置对象存储是发布和共享自定义环境的前提。

OCI Vault 服务与密钥管理


1. OCI Vault 服务简介及重要性

  • 什么是 OCI Vault?
    • Oracle 管理的密钥与凭证集中管理服务。
    • 专为存储和管理敏感凭证(如数据库密码、访问令牌、加密密钥等)设计。
    • 避免将敏感信息硬编码在本地文件或代码中,防范凭证泄露风险。
  • 数据科学场景下的意义
    • 数据科学工作流程需连接多种服务,常会用到敏感凭证。
    • Vault 为凭证提供安全存储与统一管理,按需检索。

2. 支持的加密算法与 OCI 集成

  • 支持三种主流加密算法
    • AES(对称加密)
    • RSA、ECDSA(非对称加密)
  • 集成性强
    • 支持 OCI SDK、CLI、REST API 及 ADS SDK 调用
    • 可与多种 OCI 服务配合实现自动密钥查找、凭证管理

3. Vault 的核心组成

  • Vault 本身
    • 逻辑容器,用来存储 keys(密钥)和 secrets(机密)
    • 两种类型
      • 虚拟专用 Vault(Virtual Private Vault):独立分区,隔离性更好,支持对象存储备份、灾备及跨区复制
      • 共享分区 Vault:与其他客户共用 HSM 分区,无备份功能但成本更低
  • 密钥(Keys)
    • 用于加密、解密、数字签名等
    • 三类密钥
      1. 主加密密钥(Master Encryption Key):用户自建或导入,控制算法、密钥形状/长度
      2. 数据加密密钥(Data Encryption Key):由主密钥派生,仅用于具体数据加密,被主密钥“包裹”保护(信封加密)
      3. 包裹密钥(Wrapping Keys):常用于保护数据加密密钥等
  • 密钥生命周期管理
    • 支持密钥轮换(rotation),自动生成新版本
    • 版本控制:加密/签名时用当前版本,解密时 Vault 自动追溯找到曾用的旧版本
    • 轮换好处:减少密钥泄漏影响范围,提升数据安全性和合规性

4. Secrets(机密/敏感凭证)管理

  • 什么是 Secrets?
    • 指密码、访问令牌等敏感数据
  • Vault 管理 Secrets 的好处
    • 替代将凭证写入代码/配置文件方式,提升安全性
    • 仅在运行时动态获取 Secret(通过 OCID 唯一标识),降低凭证长期暴露风险
    • 权限管理:可细粒度控制对 Secret 的访问,不同用户需具备相应授权
    • 支持 GUI(OCI 控制台)和编程/自动化(SDK/CLI/REST API)创建和管理
  • Secret 版本管理与轮换
    • 每次密文更新会生成新版本,历史版本可追溯
    • 应定期轮换 Secret,减少单个凭证暴露的风险
    • Secret 的 OCID 不变,便于代码/系统持续调用

5. 安全实践与数据科学集成

  • 最佳实践
    • 不要将凭证写入代码或本地/配置文件
    • 密钥与 Secret 统一托管于 Vault,代码仅保存 OCID
    • 业务访问时连接 Vault 动态拉取 Secret
    • 密钥与 Secrets 要定期轮换,密钥应按合规要求分级和管理
  • 数据科学工具集成
    • 可用 ADS SDK、OCI SDK 等便捷调用 Vault,实现 Notebook/脚本的凭证安全注入与资源访问

6. 总结要点

  • OCI Vault 提供密钥和凭证的集中、安全、合规管理,是云原生日益重要的安全基础设施。
  • 切勿将密钥、密码等明文暴露在代码与配置文件中,应全部迁移至 Vault。
  • 利用 Vault 的密钥管理、自动轮换、统一授权机制,强化数据科学与应用系统的安全防护。

OCI 加密管理与密钥使用、Secrets 存取


1. Oracle托管密钥与客户托管密钥简介

  • Oracle Managed Keys

    • 默认情况下,OCI自动为存储类/数据库等资源生成主加密密钥并管理密钥轮换。
    • 适用于自动化和对密钥托管要求较低的场景。
  • Customer Managed Keys(CMK)

    • 用户可选择自己在Vault中创建/导入主密钥,用于特定资源的加密。
    • 必要场景:如安全区(security zone)下,资源必须使用用户自有Vault内的主密钥。
    • 用户负责密钥的整个生命周期(创建、轮换、废弃等)。
  • 无论哪种方式,OCI所有相关数据“静态存储”都强制加密,不可关闭。


2. Python 下 Secrets 存取(OCI SDK 与 ADS SDK)

a) 使用 OCI SDK 存储与获取 Secrets
  • 存储过程示例流程:

    1. 将 Python 字典凭证 (credentials) 转换为 JSON,再base64编码。
    2. 构造“base64 secret content details”对象。
    3. 构造“create secret details”对象(包含:compartment、vault、key信息、描述、base64内容等元数据)。
    4. 用 VaultsClient,传入配置信息(config 来自 OCI 配置文件)。
    5. 调用 create_secret 并等待 secret 状态为 active(存储成功)。
  • 获取过程示例流程:

    1. 用 SecretsClient 加载 config。
    2. 用 get_secret_bundle(ocid) 拉取 Secret。
    3. 提取 data.secret_bundle_content.content(即 base64密文)。
    4. 解码还原为 JSON 字符串,再转为 Python 字典。

    小结:OCI SDK 灵活但繁琐(流程细节较多,需手动多步转换和对象拼装)。

b) 使用 ADS SDK 存取 Secrets(推荐数据科学工作流)
  • ADS SDK 提供一系列“SecretKeeper”类:

    • ADBSecretKeeper:自动存取 Autonomous Database 相关密钥和wallet文件
    • BDSSecretKeeper:管理大数据服务(Hadoop/HDFS)凭证
    • MySQLDBSecretKeeper:管理 MySQL 数据库凭证
    • AuthTokenSecretKeeper:管理 Stream、GitHub等认证token
  • ADS存取流程极简:

    • 存储示例
      1. 导入 MySQLDBSecretKeeper
      2. 创建 SecretKeeper 实例(需Vault OCID、Key OCID、明文dict)
      3. 调用 save(name=..., description=...)
    • 检索示例
      1. 用 with 语句快速临时加载 Secret
      2. 调用 load_secret(secret_ocid) 即返回字典

    小结:ADS SDK 针对数据科学场景高度抽象,调用极简,无需编码格式转换和对象拼装,代码更健壮安全。


3. Key管理与Vault操作要点

  • 资源创建时的加密密钥选项
    • 可选 Oracle 管理或自建 Vault 内密钥(安全合规/自主管理时选 CMK)。
    • CMK 支持自带密钥或 Vault 内随机生成。
  • 密钥和Secrets统一归Vault集中管理。
  • 密钥及Secret都支持自动/手动版本轮换
  • 业务代码应仅保存 OCID 等引用标识,不存明文凭据。
  • Secret “轮换”即更换密文内容,OCID不变,引用不必更改。

4. 数据科学实践场景与简化流程举例

  • ADS SecretKeeper无需手工Base64和JSON转换,直接传入 dict 即可。
  • 支持 notebook 内安全拉取数据库/Token 密码,便于多人协作与权限管控。
  • 可以统一管理并轮换敏感凭证,代码无需修改即可自动生效。

5. 重点总结

  • OCI内所有敏感数据都强制加密,分Oracle/客户自管密钥两类,各有使用场景。
  • 强烈建议用 Vault 存储所有敏感凭证,避免明文落地。
  • 数据科学最佳实践:优先使用 ADS SDK 简化操作,提高安全、便利性和可维护性。
  • Vault、密钥和Secret管理是云上安全合规的核心基础之一。

版本控制系统与数据科学:核心知识点与实践方法


1. 版本控制系统(VCS)及其在数据科学中的作用

  • 定义
    版本控制系统(也叫源码管理系统,Source Code Management)用来管理代码、文档、数据、分析过程等资源的各个历史版本。

  • 典型用途

    • 跟踪 Jupyter Notebook、脚本、报告、分析文档等的历次更改
    • 团队协作 & 变更合并
    • 归档、回溯、实验分支和对比分析
  • 常见类型

    • 集中式(如 CVS、Subversion、Perforce):所有更改集中在服务器
    • 分布式(如 Git、Mercurial、Bazaar):每个人本地均持有完整副本

2. Git——数据科学领域的主流版本控制系统

  • 特点
    • 分布式,操作快速,离线可用
    • 本地副本支持分支实验、多开发者独立并行作业
    • 最终通过 push/pull 与远程主仓库(如 GitHub、GitLab)同步
  • 分支 & 合并
    分支(branch)用于多方案并行开发;合并(merge)整合不同开发者/分支的成果
  • 版本快照与回滚
    每次 commit 相当于保存一份完整“快照”,可以随时回溯

3. 重要术语与工作区模型

  • Repository(仓库,repo):项目的完整历史(本地或远端)
  • Commit:提交快照,每次变更的永久记录
  • Working area:当前检出(checkout)代码和文件的本地工作目录
  • Staging area:暂存区,决定哪些文件将进入本次提交
  • Branch:并行开发的通道
  • Merge:合并来自不同分支/开发者的更改

4. Git 日常工作流 & 常用命令

(1)基本流程
  1. 初始化/克隆仓库
    • git init:初始化新仓库
    • git clone <url>:克隆远程仓库到本地(常用于 GitHub)
  2. 编辑和跟踪文件
    • 编辑/创建文件,保存更改
    • git add <filename>:把更改加入暂存区
  3. 提交更改
    • git commit -m "描述":把暂存区内容提交为新版本
  4. 远程同步
    • git push:推送本地提交到远程仓库
    • git pull:拉取远程最新并合并进本地
(2)进阶命令与管理
  • git fetch:拉取远程内容但不自动合并
  • git remote:查看或管理远程库链接
  • 分支相关:git branchgit checkoutgit merge

5. 数据科学服务内的 Git 集成与安全实践

  • JupyterLab Git 扩展
    • 图形界面(图标/菜单),轻松操作 Git clone、commit、push、pull、diff 等
    • 支持连接 GitHub、Bitbucket、GitLab、OCI Code Repository 等主流远端
  • OCI Code Repository
    • Oracle云上的官方Git兼容托管服务,支持IAM权限集成、自动审计、空间管理等
    • 可与 GitHub/GitLab 等外部远程仓库绑定,支持 token/SSH 密钥等安全认证
  • 安全联通
    • 推荐通过 SSH key 认证远程 repo,提升安全性(需生成/上传公钥)

6. 实践建议与总结

  • 数据科学为什么需要版本控制?
    • 快速回滚失败实验、团队高效协作、成果归档、追溯每一次建模、特征工程的演化历史。
  • 最优实践
    • 提交应及时、频繁、写明描述
    • 利用分支探索不同算法思路,最终 merge
    • 敏感信息(如API密钥)勿入版本库,建议用 Vault 管控
  • 主要掌握命令
    • git initgit clonegit addgit commitgit pushgit pull

小结

  • 版本控制系统(以 Git/GitHub 为代表)是数据科学协作与 reproducibility 的基础设施。
  • Oracle 云的 Data Science Service、JupyterLab 及 OCI Code Repository 均对 Git 提供一站式支持。
  • 熟练掌握基础 Git 工具与工作流,有助于团队合作、高效反复实验和成果管理。

4 Machine Learning Lifecycle 机器学习生命周期

机器学习生命周期概述

一、课程与生命周期简介

在数据科学和机器学习领域,企业希望数据科学家拥有高效且灵活的工具,这些工具能全面支持整个机器学习生命周期。生命周期越便捷高效,组织受益就越快和越多。

二、机器学习生命周期六大步骤

本课程将机器学习模型的构建与管理分解为六步:

  1. 数据访问(Data Access)
  2. 数据探索与准备(Data Exploration & Preparation)
  3. 建模(Modeling/Model Building & Training)
  4. 模型验证(Model Validation)
  5. 模型部署(Model Deployment)
  6. 模型监控与刷新/退役(Model Monitoring, Refresh & Retirement)

所有机器学习项目都始于一个业务问题,这为整个流程提供了目标和方向。模型构建是一个不断迭代的过程,许多步骤会被多次修改直到满意。

数据访问(Data Access)
  • 生命周期所有活动都以数据为基础。
  • 在 OCI Data Science 中,建议将数据存储在 Notebook 会话中以便快速访问。
  • 数据可来源于企业内部多种渠道:数据湖、数据库(关系型或非关系型)、数据管道等,通常由数据工程师/ML工程师搭建数据流。
  • 还可利用非结构化数据(如日志、文本、图片、视频)及外部或开源数据,如政府开放数据、网络爬取、购买第三方数据、传感器采集等。
  • 组织内的数据目录工具有助于数据发现。
数据探索与准备(Data Exploration & Preparation)
  • 原始数据需要被探索、可视化和转换,多轮处理后才可用于建模。
  • 数据准备:包括清洗和处理——识别并修正损坏、不准确、不完整和重复数据。
  • 需判断数据是否具备标签,若无标签则需进行数据标注(如使用 OCI Data Labeling Cloud Service)。
  • 数据探索工具可用于统计分析、可视化特征分布,帮助理解数值范围、类别分布、缺失值、异常值等。
  • 还需进行特征工程(如分时段特征、类别特征独热编码等)。
建模(Modeling/Model Building & Training)
  • 需选择合适的机器学习算法和输入特征。
  • 模型类型分为有监督(如分类、回归)和无监督(如聚类)。
  • 通常会尝试多种算法、调整特征,选出效果最佳的模型。
  • 训练时,数据集被划分为训练集和测试集;前者用于训练,后者检验泛化能力。
  • 减少输入特征数量有助于降低计算成本、提升泛化能力和模型表现。
模型验证(Model Validation)
  • 训练后需评估模型适用性,选用业务相应的评估指标。
    • 分类问题常用精准率、召回率、混淆矩阵等。
    • 回归问题常用均方误差、均绝对误差、R²等。
    • 无监督问题关注聚类紧密度等指标。
  • 需灵活选取与业务目标对应的评估方式。
模型部署(Model Deployment)
  • 通过 pickle、ONNX、PMML 等格式保存模型,OCI Data Science 提供模型目录用于管理与保存。
  • 部署模型时,可能还需部署相关数据预处理流程。
  • 部署形式可分为批量推断(如定时运行批量任务)和实时推断(如金融交易的实时判断),部署需结合业务场景需求。
模型监控与刷新/退役(Model Monitoring, Refresh & Retirement)
  • 部署后的模型需要持续监控,以评估其在实际环境中的表现是否下降、有无模型偏移等。
  • 监控内容包括模型性能、数据分布漂移、业务指标退化等。
  • 运维监控需与工程团队协作,关注系统延迟、资源使用率、吞吐量、可靠性等,同时做好日志和指标采集以支持溯源和故障排查。
  • 模型可能需要定期或针对性地重新训练和部署。

小结与后续

  • 机器学习是迭代性极强的过程,上述各步骤可多次重复以优化达成业务目标。
  • 后续课程将继续介绍 OCI Data Science 如何支持数据科学家高效执行全生命周期各环节。

机器学习生命周期的第一步 —— 数据访问

课程介绍

  • 内容包含为什么需要数据、数据如何收集、在 Oracle Cloud Infrastructure (OCI) Data Science 常用的数据访问方式

一、数据的产生与类型

  • 无论数字化还是非数字化,所有业务/应用都会产生数据
  • 数据通常分为三类来源:
    • 批量数据(Batch Data):由日常任务、备份、迁移等长期积累
    • 流数据(Stream Data):由用户事件、IoT 设备等实时生成的消息或日志
    • 应用数据(Application Data):通过 API 调用、应用事件、日志文件等产生

二、为何要访问和收集数据

  • 数据科学依赖数据挖掘洞察和假设驱动分析,数据是建模与推理的基础
  • 问题导向:根据业务问题确定所需数据类型
  • 反推数据价值:有大量数据时能否发现/解决潜在业务问题

三、OCI Data Science 数据访问常用方法与来源

  • 数据需被导入 OCI Data Science 以便处理与建模,可以通过界面或命令行、库操作完成

常见数据来源:

  1. Oracle Object Storage

    • 使用 API Key 或资源主体(serverless 函数)配置权限
    • 通过 ads 类库或文档接口简便加载
  2. 本地存储

    • 采用 pandas 的 read_csv 等函数指定路径读取
  3. Oracle Autonomous Database(自主数据库)

    • 推荐用 ads.read_sql,高效于 pandas 的 read_sql
    • 使用数据库钱包文件可通过连接参数指定钱包位置
    • 无钱包时需指定 host 和端口,功能需 ADS 2.5.6 及以上版本
  4. MySQL

    • 需指定 engine 为 MySQL,导入/导出用 ads 的 read_sqlto_sql
  5. Amazon S3

    • 公共/私有文件皆可用 pandas 加载,私有须通过 storage_options 提供凭据
  6. HTTP/HTTPS 端点

    • 可直接用 pandas 通过 URL 加载数据
  7. DatasetBrowser

    • 可便捷访问 Seaborn、Sklearn、GitHub 等标注好的数据集,支持列表与打开
  8. PyArrow & OCI File Systems (OCI FS Library)

    • 支持大数据文件的高效读写和典型文件系统操作

四、数据类型自动识别

  • ADS 能自动检测并区分语义数据类型:
    • 类别型(categorical):如衬衫尺码、眼睛颜色、种族(无内在顺序)
    • 有序型(ordinal):如学历(小学、高中、大学等,有顺序)
    • 连续型(continuous):定量、可度量,如身高、软件版本
    • 时间型(datetime):专门处理日期和时间
  • 可用 feature_typesshow_in_notebook 方法查看数据特征类型

五、支持的数据源和格式

  • ADS 支持多种数据源与格式,详见官方文档
  • 不直接支持文本(txt)、DOC、PDF、原始图片、序列(list/tuple/range)等
  • 提供文本提取模块,可将 PDF、DOC 转换为纯文本再处理

六、数据访问性能与建议

  • 数据库访问效率受网络延迟、索引与 SQL 性能影响,OCI 网络一般较快但仍要考虑 VPN/拓扑影响
  • 建议使用绑定变量(bind variable)防止 SQL 注入,索引优化提升查询性能

七、小结

  • 本课介绍了 OCI Data Science 中常见的数据访问方法和来源,以及数据类型处理和性能问题
  • 更多细节可参考官方 ADS 类库与文档

机器学习生命周期第二步——数据探索与准备(Data Exploration and Preparation)

课程介绍

  • 目标:理解预处理的必要性、常见步骤、ADS自动及可视化数据处理工具,以及如何拆分数据集

一、数据探索与预处理的必要性

  • 真实数据通常存在缺失值、异常值、错误或格式不一致
  • 预处理是机器学习流程中最大、最繁琐的阶段
  • 需要根据数据本身及问题类型,灵活选择预处理步骤
  • 多源数据需拼接、合并、去重、格式统一(日常数据清洗任务)

二、数据清理与合并

  • 包括添加/删除行列、过滤、连接、拼接等
  • 需要关注格式、单位、命名一致性
  • 常用 pandas 操作,也可用于 ADS 数据集对象

三、缺失值处理(Imputation)

  • 常因人为失误或传输错误导致(如 GPS 坏天气录入不准)
  • 方法:
    • 删除缺失行(不推荐,信息损失大)
    • 用均值、中位数、众数等填补(分类变量适合众数)
  • ADS 提供内置填充工具

四、类别特征编码

  • 对标称型(无顺序)类别数据,可用标签编码(label_encoder)转为数字
  • 有序型(有顺序)需注意编码方式,避免错误表达顺序
  • 独热编码(one hot encoding):将某类别列拆分成多个0-1列,常用 pandas get_dummies 或 fit_transform

五、异常值检测

  • 异常值(outlier)可由错误或极端样本组成
  • 可视化(如散点、箱线图)和统计方法区分异常
  • 监督异常检测适合有标注数据(需要大量人工);无监督常见假设大部分数据是正常分布,少量为异常
  • 机器学习异常检测以无监督为主

六、特征缩放(Feature Scaling)

  • 将所有特征量纲统一,特别适合依赖距离概念的算法(如回归)
  • 常用方法:
    • 归一化(Min-Max):将数据压缩到[0,1]
    • 标准化(Standardization):均值为0,方差为1,适合正态分布数据

七、降维(Dimensionality Reduction)

  • 维度即特征数量,高维数据计算代价大且难以控制
  • 常用方法:
    • 特征选择(Feature Selection):保留原始特征的子集
    • 特征提取(Feature Extraction):将原特征组合或变换得到新特征空间
  • 具体算法种类繁多

八、文本数据预处理

  • 包含向量化、去除停用词、词性标注、分词、词干提取、词形还原等
  • 与数值数据预处理方式不同

九、ADS 数据变换与自动工具

  1. suggest_recommendations

    • 自动检测并提示数据中的问题、推荐修正措施,用户可一键应用建议
    • 可查看建议的变量、操作及代码示例
  2. auto_transform

    • 一键自动完成推荐的所有数据优化
    • 自动填充缺失值、删除强相关特征、处理类别不平衡(上采样/下采样)、删除无预测意义的主键约束列等
  3. visualize_transforms

    • 可视化自动变换及优化流程,便于理解数据变换的顺序结构
    • 可展示每一步变换结果

十、数据集划分(训练集、测试集、验证集)

  • 划分数据集目的是检验模型泛化能力
  • ADS 默认比例:80%训练集、10%测试集、10%验证集
  • 大数据集建议80%或90%训练,数据量小时可适当减少训练集比例,避免测试集太小影响泛化误差估计
  • 拆分方式可自定义参数实现

总结

  • 本节讲解了数据清洗、编码、降维、异常检测、特征缩放等常用操作,以及 ADS 自动推荐和处理工具的使用
  • 介绍了科学划分数据集以评估ML模型性能
  • 为后续的特征工程、建模打下坚实基础

数据可视化与数据分析画像(Data Visualization & Profiling)

一、引言与重要性

  • 数据可视化(Data Visualization, DV)是现代数据分析/探索(EDA)中的核心环节,是从数据中发现价值的起点。
  • 通过合理的可视化,无需专业培训,就能快速发现数据模式关系,为业务决策提供支持。

二、数据可视化的特点与工具需求

  • 数据可视化是用图形方式解释发现/结果,帮助数据理解和业务沟通。
  • 优秀的可视化工具通常满足以下需求:
    • 能连接多种数据源(如关系数据库、本地/云)
    • 支持多样化呈现方式,有自动推荐最优显示图表
    • 具备拖拉拽、自动可视化、一键编辑等高度易用性
    • 可企业级协作、随时随地访问与共享
    • 提供手工与自动化(AI/ML赋能)灵活切换能力

三、ADS(Accelerated Data Science)的可视化能力

  • 自动类型识别与智能渲染:ADS 自动识别数据类型,选择最合适图形描述数据特征
  • 支持自定义与第三方库可视化:可用自己熟悉的可视化库(如 Matplotlib、Seaborn)进行绘制
  • 智能展现:ADS 提供自动摘要统计、分布图、相关性图、缺失/高基数特征分析等

四、ADS 关键自动可视化方法详解

  1. corr/correlation(相关性分析)

    • 调用 show corr 方法可可视化变量之间的相关性
    • 针对不同类型变量采用不同统计方法,避免结果混淆
      • 连续-连续用 Pearson 相关系数,取值范围 -1~1
      • 连续-类别用 相关比(correlation ratio),范围 0~1
      • 类别-类别用 Cramér's V,范围 0~1
  2. show_in_notebook

    • 综合预览数据集,包括任务类型(回归/分类)、规模、各特征类型及其可视化、相关性映射等
    • 为提升性能,会对样本进行智能抽样(95%置信度,置信区间1)
  3. plot 方法

    • 自动根据指定变量类型绘制合适的图表(如柱状、直方、散点、violin violin plot、热力图等)
    • 自动实现类型发现和样式选择
  4. feature_plot

    • 针对单变量或全数据集生成特征图(单变量或多变量分析)
    • 扩展 pandas dataframe 能力,支持自定义特征类型与自动警告/验证

五、自定义/高级可视化扩展

  • 使用 call 方法,可灵活调用自选绘图库如 Seaborn/Matplotlib,支持复杂自定义图形
  • 示例:Seaborn 的 pairplot 可自动绘制各特征间关系矩阵;Matplotlib 展示地理事件如加州地震分布

六、小结

  • 数据可视化使数据易理解、模式易发现,辅助 EDA 和决策
  • ADS 提供完整自动化与定制化的可视化方案,从基础到高级均可驾驭
  • 本课学习了如何实现自动和自定义数据可视化,掌握了相关方法和背后原理

模型训练(Model Training)

一、模型训练的定义与核心作用

  • 模型训练是机器学习生命周期中建模阶段的核心环节。
  • 其作用是建立一个能刻画特征与目标标签(有监督学习)或各特征间关系(无监督学习)的数学模型。
  • 训练过程最终产出一个模型“工件”(artifact),其本质是捕获了数据中的规律和结构。

二、模型训练的流程与关键要素

  • 模型得分函数(score function):衡量模型拟合优劣,可能是误差函数或最大似然函数等。
  • 损失函数(loss function/cost function):量化模型预测与真实目标标签之间差距(如均方误差),其目标是使损失降到最小。
    • 示例图像说明:绿色点是训练数据,黑线为模型预测,红色箭头表示误差(损失)。
  • 参数更新函数(update function):每次迭代调整模型参数,使损失函数不断优化。

三、开源与专有框架的协同

  • 开源软件指源码开放、可自由修改与分发的软件。其社区活跃,创新速度快,问题响应及时。
  • Oracle 数据科学环境融合了 Oracle 自身的专有框架和主流的开源框架,两者可结合用于多样的业务与科研场景。
  • 用户可自由安装或定制所需的库和框架,以满足个性化需求。

四、模型训练的实现方式及工具

  • 常见训练方式:
    1. 在 Notebook(如 JupyterLab)中用 Python 代码手动编程训练。
    2. 通过数据科学 Conda 环境配合 Accelerated Data Science(ADS)、MLX(Machine Learning eXperiment)、AutoML 等工具实现半自动或自动训练(后续课程详细介绍)。
    3. 通过“Job”任务机制(将在第四模块详解)实现自动化或批量训练。

五、小结

  • 本课简要阐述了模型训练的基本原理、涉及的关键函数与参数更新机制。
  • Oracle 数据科学平台支持灵活利用官方与主流开源框架进行各种模型训练实践。
  • 课程后续将更细致介绍具体的自动化训练流程与工具。

OCI 上机器学习(AML)模型训练与分布式训练

一、AML模型在OCI上的基础训练

  • 可以通过OCI数据科学服务的“作业(Jobs)”功能,方便地训练AML(机器学习)模型
    • 支持使用GitHub托管源码,结果保存到OCI对象存储
    • ADS工具可用于定义资源(Job)、指定训练代码来源和保存训练输出
    • 全流程可用Python代码及YAML配置控制

二、分布式训练(Distributed Training)

  • 为了应对大数据集或高计算需求,可进行分布式训练以横向扩展、减少训练时间、提升效率
  • OCI Data Science服务支持主流分布式框架:
    • Dask
    • PyTorch Distributed/Horovod
    • TensorFlow Distributed
  • 分布式训练利于并行化任务、无损模型精度/性能
  • 推荐查阅官方文档,动手实践并将结果分享到社区(如GitHub、OU社区)
  • 可选用Docker或GitHub作为实现与交付形式

三、AutoML及AutoMLx工具

  • 课程也涵盖了AutoML自动机器学习
  • 强烈建议学习AutoMLx包(OCI数据科学里的AutoMLx Conda包)
    • AutoMLx能根据输入任务与训练数据自动构建并优化模型全流程(包括特征选择、模型调优等)

四、资料与社区建议

  • 实践时多参考ADS、Alias等官方类库和文档
  • 及时关注新版特性和发布说明
  • 鼓励积极在OU(Oracle University)社区发布和讨论实际项目

自动化机器学习(AutoML)

AutoML概述

  • 自动化机器学习(AutoML: Automated Machine Learning):是一种自动化创建和优化机器学习模型的过程,帮助选择和调整模型、优化参数以提高学习效果。

AutoML方法

  • 贝叶斯优化(Bayesian Optimization):使用概率模型进行超参数配置的捕捉,以提高模型性能。
  • 推荐系统(Recommender Systems):将AutoML问题设定为推荐系统,寻找已知数据集相似性进行配置优化。
  • 遗传进化算法(Genetic Evolutionary Algorithms):如TPOT工具,通过进化算法优化机器学习管道。
  • Oracle AutoML特点:采用非迭代方法,提高效率并减少时间。

Oracle AutoML的优势

  • 允许完成整个机器学习周期,无需编写代码。
  • 自动化工作流程从数据集输入到多模型训练与评估。
  • 提高生产力并减少训练时间,通过算法选择、适应性采样、特征选择、模型调优实现。

AutoML主要步骤

  1. 算法选择(Algorithm Selection):

    • 使用元学习(Meta-learning)预测输入数据集最优算法。
  2. 适应性采样(Adaptive Sampling):

    • 从数据集的小样本开始迭代采样,评估特定算法的最优样本大小。
  3. 特征选择(Feature Selection):

    • 评价特征子集,并自动去除冗余或噪声特征。
  4. 模型调优(Model Tuning):

    • 高效调节模型超参数(Hyperparameters)以提高其准确性。

Oracle AutoML设计亮点

  • 支持并行度配置(n_jobs)及输出详细度(log level)。
  • 提供结果可视化与过程总结。
  • 支持用户设定时间预算并确保最佳模型返回。
  • 灵活算法选择与评分指标。

Hyperparameter Tuning with ADSTuner

什么是超参数调优

  • 超参数是控制机器学习模型学习过程的参数,不能从数据中直接学习。
  • 超参数调优:通过设定超参数值并优化模型,寻找最佳超参数组合。
  • 使用 ADSTuner 可以进行超参数调优。

ADSTuner 功能

  • 支持向常见模型架构插入多种超参数搜索策略。
  • 适用于任何没有超参数调优功能的机器学习库。
  • 提供用户定义的搜索空间和策略。

ADSTuner 报告与使用

  • 调优报告:列出 ADSTuner 的试验结果、最佳表现者及统计数据。
  • 实例化 ADSTuner 对象需要传递被调优的模型引用。可以选择指定交叉验证折数及搜索策略。
  • 搜索空间:通过 strategy 参数定义,选择详细或默认内置搜索标准。

搜索空间选项

  1. Perfunctory(简化):

    • 优化小空间,调优最重要的超参数。
    • 适用于搜索早期阶段,降低计算成本,评估模型质量。
  2. Detailed(详细):

    • 涵盖较大搜索空间,调优更多超参数。
    • 适用于已确定最合适的数据模型类和问题类型后。
  3. Custom(自定义):

    • 用户可提供定义搜索空间的字典。

模型调优与停止标准

  • 调优模型需使用 tune 方法,传递观测值及结果值。
  • 退出标准:通过 exit_criterion 参数定义,直到达成停止标准。
  • 修改自定义搜索空间的方式:
    1. 增加或删除超参数。
    2. 修改现有非分类超参数范围。

ADSTuner 提供通过交叉验证与搜索空间策略以及退出标准进行超参数调优的概况。

Evaluating Machine Learning Models with ADS Evaluators

模型评估的基本概念

  • 模型评估在机器学习中用于检查模型预测的准确性。
  • 通过比较预测结果与实际值,判断模型的质量。

评估的主要优点

  • 基准测试:帮助了解哪个模型性能更好,更准确。
  • 发现问题:例如,为什么模型看起来高准确但实际预测不精准。
  • 理解不同模型的优缺点:帮助选择适应不同场景的最佳模型。

ADS评估器概述

ADS评估器提供了三种类型,用于不同预测任务:

  1. 二分类评估器

    • 用于模型输出是两个选项的情况(如是和否)。
    • 常使用混淆矩阵或准确率评估模型。
  2. 多分类评估器

    • 适用于多个输出选项的预测(如预测颜色)。
    • 使用F1分数、ROC曲线等多种指标进行评估。
  3. 回归评估器

    • 预测连续数值(如价格或长度)。
    • 使用均方误差、R平方等指标评估模型。

如何进行模型评估

  • 利用 ADS类ADSModel类 计算指标并生成图表。
  • 使用 evaluator.show_in_notebook 在笔记本中显示图表。
  • 可以添加自定义指标来满足具体需求。

评估的实际操作

  1. 使用 from_estimator 将模型转化为 ADSModel 对象。
  2. 使用 evaluator.metrics 显示所有相关指标。
  3. 使用图表展示模型的各种表现,看出其中的差异。

总结

理解模型评估不仅有助于提高模型预测的质量,还能帮助选择最适合特定任务的模型。通过ADS工具,我们可以简单而有效地进行深入的模型评估。

ADSEvaluator

介绍

  • ADSEvaluator 是一种工具,帮助我们评估机器学习模型。
  • 它有三种类型:二分类、多分类和回归。
  • 这些工具让我们更容易计算和绘制相关的评估指标。

二分类评估示例

  1. 导入ADSEvaluator类

    • 通过导入ADSEvaluator类来使用评估功能。
  2. 创建数据集并进行训练

    • 我们创建一个二分类数据集并进行拆分。
    • 用不同的模型(如Logistic回归和随机森林)进行训练。
  3. 包裹和评估模型

    • 使用ADS Model类包裹这些模型。
    • 用ADSEvaluator创建评估对象,传入刚创建的模型。
  4. 打印指标

    • 使用 evaluator.metrics 打印训练和测试数据上的相关指标。
  5. 绘制图表

    • 使用 evaluator.show_in_notebook 自动绘制图表,如混淆矩阵。
    • 这使得评估过程简单快捷。

鼓励实践

  • 通过使用不同数据集来探索ADSEvaluator,您会更熟悉这些工具。
  • ADSEvaluator极大简化了评估的计算和绘制工作流程。

模型可解释性

什么是模型可解释性?

  • 解释性:是指揭示机器学习模型为何做出某种预测的能力。
  • 可解释性:是指人类能够理解这种解释的程度。

模型解释的类型

  1. 全局解释:分析整个模型的整体行为,而不是具体预测。
  2. 局部解释:解释为何某模型做出特定预测。
  3. 假设解释:分析特征值变化如何影响模型预测。

全局解释技术概述

  • 特征置乱重要性

    • 通过打乱特征的数据并观察预测误差的变化来评估特征对模型的影响。
    • 使用箱型图、柱状图和散点图展示特征的重要程度。
  • 特征依赖性解释

    • 分析特征值与模型预测之间的关系。
    • 使用部分依赖图(PDP)和个体条件期望图(ICE)进行出解释。
  • 累计局部效应

    • 隔离掉其他特征的影响,分析特定特征对模型预测的贡献。
    • 更加稳健地处理模块相关特征。

局部解释技术:LIME

  1. LIME概念

    • LIME通过简单易懂的模型(如线性模型)来近似复杂模型的局部行为。
    • 有助于生成复杂模型的局部解释。
  2. 计算局部解释

    • 从训练好的ML模型开始,选择需要解释的样本。
    • 随机生成附近区域的样本并计算预测。
    • 训练线性替代模型以解释本地样本。
  3. ADS LIME包含三部分

    • 模型部分:显示模型信息和预测数据。
    • 解释器部分:展示解释器配置参数和说明。
    • 解释部分:说明特征贡献及如何影响预测。

假设解释技术:WhatIf Explainer

  1. 概念和技术

    • 帮助理解观测值的变化如何影响模型预测。
    • 包括两种方法:探索样本和探索预测。
  2. 探索样本

    • 通过更改样本的特征值并查看预测变化。
    • 展示原始值与更改后的值的对比。
  3. 探索预测

    • 探索模型在特征(一个或两个)的分布上的预测。
    • 一个特征:呈现特征与目标的关系图。
    • 两个特征:使用颜色标识目标值的变化。

示例技术操作细节

  • 特征置乱重要性的工作原理

    • 随机打乱特征值,增加噪音,观察预测误差变化。
    • 如果模型依赖特定特征,则打乱后预测误差增加。
  • 特征依赖性解释的工作原理

    • 使用多种特征值,通过替换和计算模型推断结果,评估特征对模型的影响。
  • ALE图的解释

    • 对特征影响的垂直柱状图展示每个特征值对预测的影响。
    • X轴显示特征的不同值,Y轴显示相对于平均预测的变化。

总结

理解模型可解释性可以帮助克服模型复杂性带来的挑战,进一步推动机器学习的应用。

Explainability和Explainer对象

简介

  • 主题:讨论解释性(Explainability)以及解释器对象(Explainer objects)。

使用Explainer对象

  1. Oracle AutoMLx库

    • 使用 Oracle AutoMLx 库来实现Explainer对象。
    • 库安装在名为 automlx_p28_cpu 的conda环境中。
  2. 初始化AutoMLx引擎

    • 导入AutoML库并使用 INIT 函数初始化引擎。
    • 获取估计器(estimator)并拟合数据。
  3. 创建Explainer对象

    • 使用估计器可以获得Explainer对象。
    • 在这些对象上调用各类方法,实现局部及全局解释性。

调用解释方法

  • ML Explainer接口
    • 提供更多解释性方法的信息。
    • 根据数据集使用更具体的 TabularExplainerTextExplainer

实践建议

  • 建议从多个数据集中选择并使用解释性及Explainer对象。
  • 通过实践来探索这些工具,提高使用能力。

运用Explainer对象可以帮助理解机器学习模型的行为,建议多练习以更好地掌握这些工具。

模型目录

简介

  • 主题:概述模型目录(Model Catalog),提供跟踪和存储模型的方法,能维护模型生命周期中的所有阶段的来源。

模型工件及其组件

  1. 模型工件

    • 包括模型、超参数、元数据、输入输出框架,以及用于加载模型和进行预测的脚本。
    • 模型工件可在数据科学家之间共享,用于跟踪、复制和部署。
  2. 目录条目组件

    • ZIP文件:保存的模型、Python脚本(score.py)、运行时环境配置(runtime YAML)。
    • 元数据:关于模型的来源,包括GIT信息及用于推送到目录的脚本或笔记本。

模型目录操作指导

  • 不可变性:模型工件不得更改,需创建新模型以应用任何变化。
  • 容量限制:保存时的最大容量为控制台上100兆字节,通过ADS和OCI SDK时可达20千兆字节。
  • 通过创建模型工件,将模型保存在模型目录中,实现集中存储及跟踪元数据。

重要文件说明

  1. score.py

    • 包含加载序列化模型对象并定义推断端点的逻辑。
  2. runtime YAML

    • 提供关于模型部署时使用的conda环境的信息。
  3. validate.py

    • 提供一系列测试定义,用于在保存到目录之前运行模型工件的测试。
  4. requirements.txt和Readme.md

    • 列出第三方依赖项及保存工件至目录的步骤指导。

元数据准备

  • 模型输入输出框架:描述成功预测所需的特征。
  • 模型来源:记录源代码、计算资源等以提升复制和审计可能性。
  • 模型内省测试:检查模型工件的操作健康状态。
  • 模型分类:描述模型,包括机器学习用例、框架、算法等重要细节。

安全及访问政策

  • 需要通过政策设定访问模型目录,与OCI资源访问策略一致,以确保安全。
  • 适用于模型目录管理及调用的不同政策,允许访问其他OCI资源如对象存储。

模型序列化

什么是序列化?

  • 序列化:将数据对象(如Python对象或TensorFlow模型)转换为可存储或传输的数据格式,以便在需要时通过反序列化重建对象。
  • 常用序列化格式包括JSON、XML、HDF5和Python的Pickle。

ADS模型序列化及保存

  • 序列化类:根据不同模型(如PyTorch、TensorFlow)使用相应的序列化类。
  • 保存方法:将模型工件存储到模型目录中,重新加载score.py和runtime YAML文件,并进行内省测试。
  • 通用模型准备:使用GenericModel函数将任何模型转化为ADS模型对象。

模型保存选项

  • 接口:ADS SDK、OCI Python SDK和OCI控制台。
  • 操作:查看、编辑、移动、删除、激活或停用模型,添加标签。
  • 视图和信息:模型来源、培训资源、培训代码、模型分类。

模型操作说明

  • 编辑:修改名称、描述、来源和分类但不能修改模型或其输入输出架构。
  • 移动:可在隔间内移动,但不能跨项目。
  • 激活/停用:激活更新为活动状态,未激活的模型无法用于模型部署。
  • 删除:删除后模型仍在列表中显示30天,可通过状态过滤器隐藏。

用户在模型目录中可以执行模型的创建、更新、列出和删除操作,并通过控制台或SDK进行管理。

模型部署

模型部署概述

  • 主题:在OCI数据科学中,学习如何部署机器学习模型,管理、调用、监控和停用/重新激活模型部署。

模型部署流程和架构

  • 模型目录:培训后保存最佳模型至模型目录。

  • 预测消费:选择批量或实时预测方式。

    • 批量消费:定期预测。
    • 实时消费:通过触发器执行预测,如检测事务欺诈。
  • 模型部署架构组件

    • 负载均衡器:自动分发流量至多个模型服务器。
    • 虚拟机实例池:托管模型服务器及其conda环境。
    • 模型工件:包括模型文件和预测代码。
    • conda环境:封装第三方Python依赖。
    • 日志:监控和调试帮助。

创建和调用模型部署

  • 构成:score.py和runtime.yaml文件。
  • 配置:计算形状、实例数、日志服务和负载均衡带宽等。
    • 负载均衡带宽公式示例:估算请求数与额外20%误差。
  • 创建方法:使用ADS部署方法、OCI CLI命令或UI控制台。
  • 调用模型部署:发送HTTP请求至端点返回预测结果。

管理模型部署

  • 管理操作:查看、编辑、调用、停用和重新激活模型部署。
    • 使用项目UI控制台查看细节、访问日志。
  • 停用与重新激活:停用后停止计费,重新激活继续使用。
  • 监控工具
    • OCI日志服务:访问和预测日志。
    • OCI监控:CPU、内存、网络利用率等指标。

可以通过监控和日志,提升模型部署的性能和稳定性。

模型部署动手演示

环境准备

  • 进入OCI数据科学项目空间,选择你的工作项目。
  • 点击左侧的资源,如笔记本会话、工作任务、模型和模型部署。

创建模型部署

  1. 选择模型部署方式

    • 点击“创建模型部署”。
    • 确认所在隔间,在我的情况中,是OCI数据科学隔间。
    • 输入模型的唯一名称(限制255字符),或系统自动生成。
    • 输入描述,例如“测试模型部署”。
  2. 选择模型和配置

    • 从模型目录中选择活动模型,如选择RF分类器。
    • 选择VM形状和资源限制,例如OCPUs为1,内存为15。
    • 选择实例数量以通过多个服务器处理请求(例如选择2)。
  3. 日志和负载均衡配置

    • 可选配置日志(访问和预测日志)。
    • 通过高级选项设置负载均衡带宽,推荐公式考虑误差预留20%。
    • 点击“创建”,等待部署完成,状态变为活动。

管理和监控

  • 检查部署信息,包括一般信息和计算资源。
  • 查看详细度量,如成功率、请求计数、CPU和内存使用率。
  • 智能记录类型为预测和访问,查看创建模型部署的工作请求。

模型调用与操作

  • 模型可作为HTTP端点调用或使用OCI CLI调用。
  • 可使用OCI Python SDK或Java SDK进行调用。
  • 模型部署可随时停用、重新激活或删除。

TensorFlow模型部署

概述

  • 主题:在Oracle数据科学服务中注册和部署TensorFlow模型。

序列化和准备模型

  1. 创建模型序列化对象

    • 使用TensorFlow模型类来包裹模型,并提供各类部署辅助方法。
  2. 准备模型工件

    • 使用 .prepare 创建模型工件,包括score.py和其他JSON配置文件。
    • 确认score.py文件中的load和predict函数正常工作,避免部署模型进行测试。

保存和部署模型

  • 保存模型:在验证score.py文件后,使用 .save 保存模型到模型目录。
  • 部署模型:在保存至目录后,使用 .deploy 来完成生产部署,同时设置属性如显示名称、实例类型等。

调用和清理

  • 调用接口:使用 predict 方法发送数据至部署端点获取预测。
  • 资源清理:在完成演示后,确保删除模型部署和模型工件,释放资源。

代码组件和管理

  • 使用模块

    • ADS库与Oracle交互,日志模块控制输出,pandas处理数据。
    • TensorFlow用于构建和训练模型,matplotlib用于展示数据集。
  • 管理和检查

    • 使用 summary_status 方法检查和跟踪部署进度。
    • 设置认证方式以确保与Oracle数据科学服务的交互。

删除和清理资源步骤

  • 删除模型部署:需在删除模型之前进行。
  • 删除本地保存的模型工件,确保目录清理。

大型语言模型训练和集成总结

概述

  • 主题:OCI数据科学作业提供了完全托管的基础设施,用于大规模训练大型语言模型。支持全参数微调以及参数高效微调。

大型语言模型训练

  1. 预训练模型获取

    • 从Meta或Hugging Face获得预训练模型。
  2. 定义和启动训练作业

    • 使用ADS Python API定义训练作业和运行。
    • 通过API调用启动作业运行,并实时输出。
  3. 设置和运行步骤

    • 设置Conda环境并安装额外依赖。
    • 从GitHub获取源码并签出特定提交。
    • 运行训练脚本并下载模型和数据集。
    • 保存输出至OCI对象存储。
  4. 自动配置

    • 无需手动指定节点数或GPU数,ADS会根据指定的副本和形状自动配置。
    • 精调完成后,保存检查点至指定的OCI对象存储桶。

生成式AI与语言集成

  • 功能:提供文本生成、摘要、嵌入模型,以用于LangChain和ADS。
  • 认证方法
    • 使用ads.set_auth方法默认配置认证。
    • 可选地传递auth关键字参数以使用特定认证方法,例如OCI资源原理。

MLOps Practices

MLOps 与 Oracle Cloud 中的应用


中文摘要

本课程介绍了 MLOps(机器学习运维) 在 Oracle Cloud 中的实践应用。MLOps 借鉴了 DevOps 的理念,通过自动化的方式提升机器学习模型从开发到上线全过程的效率和质量。

MLOps 涉及的数据管理、模型部署、持续集成、持续部署与持续训练等机制,有助于应对数据变化、模型老化等问题,确保模型始终保持最佳状态并稳定服务于业务系统。


1. 什么是 MLOps?

  • MLOps 是 Machine Learning Operations 的简称,即“机器学习运维”。
  • 它借鉴了 DevOps(开发与运维一体化)的方法论。
  • 目标是:提高机器学习工作流程效率,并保持结果的一致性与可重复性

2. MLOps 的核心理念

  • 将机器学习模型视为一种“软件资产”。
  • 通过标准化与自动化方式管理模型的全生命周期。
  • 模型和相关服务一起作为一个整体发布上线。

3. 与 DevOps 的关系与区别

  • 两者都强调:

    • 构建(Build)
    • 测试(Test)
    • 持续部署(Continuous Deployment)
    • 监控(Monitoring)
  • MLOps 额外增加的特点:

    • Continuous Training(持续训练):因为数据是不断变化的,模型必须定期重新训练。
    • 模型验证(Model Validation):每次训练后都要确保模型质量达标,才能再次部署。

4. 为什么持续训练(Continuous Training)很重要?

  • 与传统软件不同,机器学习模型受 数据漂移(Data Drift) 影响大。
  • 如果模型不及时更新,预测准确率会下降。
  • 所以,需要有机制监控模型性能,一旦下降,就触发重新训练与部署。

5. MLOps 自动化成熟度阶段

  1. 手动阶段

    • 使用像 Jupyter Notebooks 这样的工具手动执行数据准备、模型训练与验证。
    • 适合实验阶段,开发灵活,但不易重复。
  2. 流水线自动化阶段

    • 将训练和验证流程通过自动化工具连接起来。
    • 每当有新数据进入时,自动触发模型训练与评估。
  3. CI/CD 自动化阶段(真正的 MLOps)

    • 使用 CI(持续集成) + CD(持续部署) 管理整个模型生命周期。
    • 模型、数据、代码都自动构建、测试、上线。
    • 性能监控业务指标 结合,当模型效果变差时,自动触发新一轮训练。

6. Oracle Cloud 中的 MLOps 架构(简述)

  • 数据输入 → Jupyter Notebooks 模型开发
  • 触发 OCI DevOps CI/CD 管道
  • 执行模型训练 → 存入模型目录(Model Catalog)
  • 测试通过后 → 上线部署至生产环境
  • 模型服务最终提供给终端用户使用
  • 整个过程中伴随持续监控自动回滚机制

核心术语小结

  • MLOps:机器学习运维
  • DevOps:开发运维一体化
  • CI/CD:持续集成 / 持续部署
  • Continuous Training:持续训练(MLOps 特有)
  • Data Drift:数据漂移
  • Model Validation:模型验证
  • Jupyter Notebooks:常用的模型开发工具
  • Oracle Cloud Infrastructure(OCI):Oracle 云平台
  • Model Catalog:模型目录,用于存储与管理已训练模型

总结

MLOps 通过引入 DevOps 的流程自动化理念,将机器学习模型的开发、部署、训练与监控全过程串联起来,实现高效、可控、可重复的模型生命周期管理。随着系统成熟度提升,从实验到自动化部署再到智能监控,每一步都让 AI 模型更贴近实际业务、更稳定地服务于用户。

OCI Data Science Jobs 服务详解


中文摘要

本课程介绍了 Oracle Cloud Infrastructure (OCI) 中的 Data Science Jobs 服务,这是在 Oracle Cloud 上实现 MLOps(机器学习运维) 的核心组件之一。该服务支持批量处理、模型训练、自动化推理等关键流程。通过 按需自动部署与销毁资源 的机制,Jobs 服务既节省成本,又简化了复杂的工作流。

Jobs 支持多种运行方式,可结合 Python、Bash 脚本或打包的 ZIP/TAR 项目运行。支持多类型批处理任务,如普通批处理(Batch)、小批量(Mini-batch)与分布式批处理(Distributed)。也可结合 CI/CD 流水线 实现自动化调度。


一、Jobs 服务的作用

  • 是 Oracle 数据科学服务的一部分
  • 在需要时自动创建计算资源(按需调用,按时计费)
  • 可执行的任务包括但不限于:
    • 数据准备
    • 模型训练
    • 批量推理(Batch Inference)
    • 任意用户自定义流程
  • 可整合为 MLOps 生命周期中的一个或多个步骤

二、Jobs 服务的优势

  1. 完全托管:无需维护服务器或第三方系统
  2. 自动部署资源:只在任务运行时创建计算资源
  3. 与 Oracle Cloud 深度集成
    • 可访问数据库、对象存储、网络、安全服务等
    • 使用 Oracle 的网络与权限配置,如 VCN(虚拟云网络)
  4. 灵活配置资源与计费优化
    • 自动释放资源
    • 只为实际使用的时间付费

三、核心概念:Job 与 Job Run

概念 说明
Job 定义任务的“模板”,包含执行指令(artifact)、资源配置、环境变量等
Job Run Job 的一次实际执行,可传入不同参数,自动部署资源,运行后销毁
  • 一个 Job 可有多个 Job Run(串行或并行执行)
  • 可用于调参实验、重复执行等

四、关键配置说明

  • Artifact(任务指令包):上传后不可修改,是任务的核心代码
  • 环境变量 / CLI 参数:可统一设定,也可每次执行时覆盖
  • 计算规格(Compute Shape):可在任务模板中设置并随时修改
  • 存储大小、日志选项、最大运行时间(最多 30 天)
  • VCN 网络配置:可选择私有网络运行
  • 日志监控与运行状态跟踪:全程可视化追踪

五、支持的任务类型与运行方式

  1. 简单任务(单文件)

    • Python(已预装常用库)或 Bash 脚本
    • 可运行在默认或自定义 Conda 环境(如 NumPy、Dask 等)
  2. 复杂任务(多文件)

    • 使用 ZIP / TAR 包上传整个项目
    • 包含 JOB_RUN_ENTRYPOINT 指定主入口文件
    • 支持 runtime YAML 文件设定环境变量与依赖
  3. 访问权限与运行渠道

    • 通过权限策略访问 OCI 资源(如 ADW、Object Storage)
    • 可配置访问私有网络或使用 OCI Vault 进行安全认证
    • 支持通过:
      • OCI 控制台
      • OCI CLI
      • 编程接口(Python / Java / Go / JS / Terraform)
      • 外部平台(如 GitHub、Bitbucket、CI/CD 流水线)发起 Job 运行

六、三种批量处理方式对比

类型 说明
常规批处理(Batch) 标准任务,一次处理一批数据,适合每日定时运行
小批量(Mini-batch) 更高频次、处理更小数据块,例如银行每几分钟检测一次欺诈交易
分布式批处理(Distributed) 大数据量被拆分,多个 Job 同时运行,无相互依赖,极大提升处理效率(也叫“尴尬并行” Embarrassingly Parallel)
  • 每种任务都可使用 Job Run 实现自动调度(如定时任务 cron、数据到达触发等)

七、性能优化与资源扩展

  • Job 与 Notebook 均可编辑:
    • 计算规格(Compute Shape)
    • 块存储(Block Storage)大小
  • 根据任务需求可灵活“横向或纵向扩展”

八、总结回顾

  • Jobs 服务是 Oracle 实现 MLOps 自动化与任务调度 的关键工具
  • 适用于训练、预测、批处理、自动重训等多种场景
  • 按需运行、自动清理资源、降低成本
  • 灵活结合各种工具、语言与第三方系统进行统一管理
  • 提供可扩展、可审计、可监控的机器学习基础设施

核心术语速查表

英文术语 中文说明
MLOps 机器学习运维,DevOps 在 AI 领域的应用
Job 任务模板,定义运行内容与资源配置
Job Run 任务实际执行,按需部署资源并完成执行
Artifact 任务指令包(ZIP、TAR、Python 文件等)
VCN 虚拟云网络,类似私有网络
CI/CD 持续集成 / 持续部署
Mini-batch 高频小数据量批处理任务
Distributed Batch 并行分布式批处理,适合大数据拆分并行执行
JOB_RUN_ENTRYPOINT 设定 ZIP 包内的主运行文件路径

OCI Data Science Jobs:监控与日志功能


本模块介绍了 Oracle Data Science 中 Jobs 服务的监控(Monitoring)日志(Logging)功能,这是 Job 生命周期中最后一个关键环节。在 Job 运行结束、资源释放前,系统会生成各类指标与日志,帮助用户了解 Job 的运行状态、性能表现和问题排查依据。

此外,OCI 的 事件服务(Event Service) 可自动侦测资源状态变化(如 Job 创建、更新、删除等),并触发自动操作(如发通知或运行函数),为 MLOps 自动化提供重要支持。


一、监控(Monitoring):了解资源状态与性能指标

✅ 1. 作用
  • 提供 Job 运行期间的实时状态、资源利用率、性能瓶颈等信息
  • 帮助用户判断是否需要:
    • 扩展资源(如 CPU、GPU、内存、磁盘)
    • 优化 Job 执行效率
    • 定位问题或故障
✅ 2. 关键组件
组件 说明
Metrics(指标) 实时生成的运行数据,如 CPU/GPU 使用率、内存、网络带宽、磁盘 IO 等
Alarms(告警) 设置阈值规则,指标超过时触发告警,如 CPU 超过 80% 时发通知
Notifications(通知) 告警触发后发送消息给邮箱、Slack、SMS 等订阅通道

二、日志(Logging):记录任务细节,便于排错与审计

✅ 1. 两种日志类型
类型 说明
Service Logs(系统日志) 自动采集任务输出(stdout、stderr),由 OCI 日志服务管理
Custom Logs(自定义日志) 用户自定义内容与存储位置,可根据具体业务需求格式化内容
✅ 2. 使用建议
  • 开启日志服务可提升:
    • 调试效率:捕获错误、查看输出过程
    • 监控质量:判断运行行为是否符合预期
  • 可以为每个 Job Run 创建独立日志,也可共用一个日志组(Log Group)
  • 开启“自动日志创建”后,每次任务运行自动写入指定日志组,无需手动配置
  • 注意:日志不会因 Job 被删除而自动清除,需手动管理日志生命周期

三、事件服务(Event Service):自动响应资源状态变化

✅ 1. 什么是事件?
  • 事件(Event) 是资源发生变化(如 Job 创建/删除)的结构化信息
  • 属于 CRUD 操作的一种:Create、Read、Update、Delete
✅ 2. 工作流程
  1. 用户创建 规则(Rule),定义想监控的事件类型
  2. 规则匹配事件后,触发用户设置的 动作(Action)
  3. 支持的动作包括:
    • 发送通知(通知服务)
    • 调用函数(Oracle Functions)
    • 启动数据流(Streaming)
  4. 每条事件规则可设置多个动作,至少保证一次交付(At-least-once delivery)

四、监控指标示例(Metrics)

以下是常见的 Job Run 性能指标:

指标名称 说明
CPUUtilization CPU 使用率
GPUUtilization GPU 使用率(如使用 GPU 实例)
MemoryUtilization 内存使用率
NetworkIn/Out 网络输入/输出流量
DiskUtilization 磁盘读写率

⚠️ 当某些指标接近资源上限(如 CPU > 80%),建议调整计算规格(Compute Shape)或扩容存储(Block Storage)


五、总结回顾
  • 监控与日志是 Job 生命周期中不可或缺的环节,支持实时洞察与问题排查
  • 指标 + 告警 + 通知三者联动,有效保障任务健康运行
  • 日志系统支持自动与手动两种方式,便于精细化管理任务执行过程
  • 事件服务允许系统自动响应资源变化,是 MLOps 自动化的关键基础设施之一

核心术语简表
术语 中文说明
Monitoring 监控服务,用于追踪系统运行指标
Metrics 性能指标,如 CPU、内存、网络等
Alarms 告警机制,指标超阈值后触发动作
Notifications 通知服务,支持邮件、短信、Slack 等通道
Logs 日志,记录任务过程的输出
Service Log 系统标准日志(stdout、stderr)
Custom Log 自定义内容与输出格式
Log Group 日志分组,用于组织和隔离日志
Event Service 事件服务,监听资源变化并触发自动响应
Rule 事件触发规则
Action 响应动作,如通知或函数调用

Data Science Pipeline


本节介绍了 Oracle Cloud Infrastructure (OCI) 的 Data Science Pipeline 功能,它是用来构建完整的机器学习或数据科学自动化流程的关键工具。Pipeline 由多个独立步骤(Step)组成,可以处理从数据预处理到模型部署的全过程。

通过 Pipeline,可以将多种任务自动化组合在一起,提高效率、降低人为错误、统一环境设置,是构建 MLOps(机器学习运维)的核心组成。


一、Pipeline 是什么?

  • Pipeline 是 OCI Data Science Service 的新功能。
  • 用于将多步机器学习任务自动化结构化
  • 每个 Pipeline 由多个步骤组成(Step),典型步骤包括:
    • 数据处理
    • 模型训练
    • 模型评估
    • 模型部署
  • 步骤可并行或串行执行,取决于依赖关系设定。

二、跨语言、多环境支持

  • 每个 Step 是独立单元,可以使用不同语言和工具:
    • 例如:使用 Python 做数据处理,使用 Java 做模型训练。
  • 支持在不同环境中运行,提高灵活性与适配性。

三、执行顺序控制(依赖)

  • 默认情况下,所有步骤并行执行。
  • 通过显式设定依赖关系,可以实现步骤按顺序执行:
    • 先数据处理 → 再模型训练 → 再模型评估 → 最后模型部署。

四、Pipeline 的默认配置(Pipeline-Level Configuration)

在定义 Pipeline 时,可设定以下默认参数:

  • 计算规格(Compute Shape):运行使用的计算资源类型
  • 存储空间(Block Volume)
  • 环境变量(Environment Variables):如数据路径等
  • 最大运行时间(Max Runtime)
  • 日志配置(Log Settings)

若某个 Step 没有自己的配置,就会继承这些默认值。


五、Pipeline Step 配置(Step-Level)

每个 Step 也可以定义自己的配置,用来自定义行为:

配置项 说明
脚本方式 提供 Python / Bash / Java 脚本,单文件或 ZIP 包
Job 方式 使用已有 OCI Job(通过 OCID 识别)
访问资源 通过配置权限策略访问 OCI Object Storage、数据库等
外部资源访问 可通过设置 VCN 访问外部系统或服务

✅ Step 的配置优先级高于 Pipeline 的全局配置。


六、Pipeline 生命周期(Lifecycle)

状态 描述
Creating Pipeline 正在创建中
Active 创建完成,可运行
Pipeline Run 每次运行称为一次执行实例
Deleting 执行完后可选择删除
  • 一个 Pipeline 可执行多次,每次为一个独立 Pipeline Run
  • 每个 Run 会产生自己的日志、状态、输出

七、演示场景:完整三步流程

以下为官方课程中使用的示范流程:

Step 1:数据处理

  • Object Storage 读取原始数据文件
  • 执行数据预处理:
    • 删除部分列
    • 标签编码(Label Encoding)
    • 数据标准化(Scaling)
    • 数据拆分为训练集 / 测试集
  • 将结果保存回 Object Storage
  • 设置变量:传递数据路径给 Step 2

Step 2:模型训练

  • 使用 3 种算法训练模型:
    • Linear Regression
    • Random Forest
    • XGBoost
  • 将所有模型保存至 Model Catalog

Step 3:模型评估与部署

  • Model Catalog 中读取模型
  • 对模型性能进行评估
  • 选出最佳模型
  • 部署至实际应用环境中

八、总结要点

主题 内容
Pipeline 概念 多步骤自动化流程
Step 灵活性 可并行 / 串行,可混合多语言
配置机制 支持全局与局部配置,优先级明确
生命周期 包括创建、执行、多次运行、删除
使用价值 实现数据科学与 MLOps 的自动化和规模化管理

九、关键术语速查

英文术语 中文说明
Pipeline 流水线,自动执行多个步骤的工作流
Step 步骤,Pipeline 中的任务单元
Pipeline Run 流水线的一次执行
Step Artifact 脚本或指令代码,用于实现 Step 功能
OCID Oracle Cloud Identifier,资源唯一标识
Model Catalog 模型目录,存储训练结果模型
Object Storage OCI 对象存储服务
VCN 虚拟云网络,配置外部访问

✅ 适用场景

  • 自动化训练多个模型并选出最优方案
  • 管理复杂数据科学流程,避免人为错误
  • 支持大规模批处理和部署
  • 实现 MLOps 自动化,构建企业级生产系统

OCI Data Science 计算资源自动扩缩容(autoscaling)


一、内容摘要

  1. 自动扩缩容(autoscaling)概念

    • 部署模型时,需要在成本与性能、可用性之间做权衡。
    • 负载不稳定时,静态配置常常浪费资源或无法应对突发流量。
    • 自动扩缩容允许根据需求自动增加或减少实例数量,提升资源利用效率与响应性。
  2. 自动扩缩容的关键点

    • 定义实例数范围:设置最小和最大实例数,服务会根据负载自动在范围内调节。
    • 自定义触发条件:可设定资源使用阈值(如 CPU 或带宽)作为扩缩容的依据,控制扩缩容的时机和速度。
    • 负载均衡器支持:不仅能扩缩计算资源,还可以与负载均衡带宽联动,根据流量自动调整带宽配置。
  3. 自动扩缩容的优势

    1. 动态资源调整:自动根据实时负载增加或减少计算资源,保证模型高效处理波动流量。
    2. 成本效益:只为所需资源付费,相比固定资源部署更节省开支。
    3. 高可用性:与负载均衡器配合,实例失效时可流量转移,确保不中断服务。
    4. 自定义触发器:可通过 NQL 表达式自定义扩缩条件。
    5. 负载均衡兼容:自动调节带宽,防止拥塞,提升性能和成本控制。
    6. 冷却时间:扩缩后设有冷却期,避免短时间内频繁操作。
  4. 扩缩容的工作机制

    • 基于性能指标(metric-based autoscaling):如 CPU 利用率、内存利用率等。
    • 只允许配置一个基于指标的扩缩策略。
    • 这些指标由监控服务收集并聚合,平均到每个实例。
    • 达到连续的阈值后即触发扩缩,扩缩后有冷却期防止频繁动作。
  5. 指标类型与配置

    • 预定义指标:CPU 利用率、内存利用率(可选择其一并设阈值)。
    • 自定义指标/NQL 表达式:可自由组合模型部署产生的所有监控指标,自定义聚合方式、条件构造更复杂的策略。
  6. 部署与运维建议

    • 创建模型部署时可配置计算和负载均衡自动扩缩容。
    • 建议高级场景下采用自定义指标设置。
    • 配置前需确保添加了允许服务扩缩容读取指标的 OCI 策略(policy)。
    • 通过控制台、CLI 或 API 均可管理配置。
    • 处于 active 状态的模型部署,对扩缩策略的修改需与其它配置分开操作,而在 inactive 状态下可以一起修改。
  7. 指标和权限管理

    • 模型部署自动收集多维度指标(如资源ID、状态码、结果等),无需额外启用监控服务。
    • 若用自定义指标,建议用 NQL 灵活组合所需条件。
    • 自动扩缩容需要在租户下添加允许读取 metrics namespace='oci_datascience_modeldeploy' 的授权策略。

二、结构化分段

  1. 自动扩缩容的意义与挑战

    • 部署时难以精准预测负载。
    • 静态资源浪费or应急不足,自动扩缩容平衡了成本和性能。
  2. 自动扩缩容机制与场景

    • 可以定义资源增减阈值和实例数量范围,负载上升自动扩容,下跌自动缩容。
    • 同理,负载均衡器带宽也可被自动调节。
  3. 优势总结

    • 动态调节 → 高适应性
    • 成本节省 → 只为实际所用资源买单
    • 高可用性 → 防止单点故障
    • 灵活自定义 + 与节点冷却组合防止频繁抖动
  4. 扩缩容的实现方式

    • 以性能指标为触发条件(CPU、内存等),阈值达标后按设定扩缩。
    • 每次扩缩后有冷却期,避免频繁波动。
  5. 指标选择与定制

    • 可使用系统预置指标,也可通过 NQL 表达式灵活组合多项指标,支持更复杂的业务场景。
  6. 运维实践与配置管理

    • 管理自动扩缩容需合理配置权限策略。
    • active 状态下,只能单独修改扩缩策略配置。
    • inactive 状态下,支持批量修改多项配置。
  7. 监控与指标数据说明

    • 数据科学模型部署自动采集必要监控指标,无需手动开启。
    • 自定义策略可用 NQL 表达式更精细控制扩缩逻辑。

三、知识点整理与建议

  • 自动扩缩容是处理云端服务流量波动的核心能力,能极大提升运维效率与资源利用率。
  • 合理配置上限与下限、冷却期和告警阈值,是发挥自动扩缩容最佳效果的关键。
  • 对于复杂业务场景和非典型负载曲线,建议使用自定义指标+NQL 表达式,提升针对性和精度。
  • 别忘记,策略和权限设置是整个方案能否正常运行的基础,务必验证授权是否齐备。
  • 活用监控平台的实时指标,持续优化扩缩策略,实现最佳性能与成本平衡。

OCI Data Science Pipelines


一、内容摘要

介绍 OCI Data Science Service 的新功能——Pipelines。

  1. Pipelines 功能概述

    • Pipelines(流水线)帮助用户自动化端到端的机器学习工作流程。
    • 支持包括数据提取、数据验证、数据准备等多个步骤。
    • 这些步骤可以串行(顺序执行),也可以并行(同时执行)。
  2. Pipelines 的优势

    • 能极大提升机器学习项目的流程自动化与效率。
    • 简化了多步骤、重复性强的 ML 流程操作。
    • 便于工作流的标准化与可复用性。
  3. 学习与实践建议

    • 强烈推荐查阅官方文档,动手实践 Pipelines,实现工作流端到端的自动化。

二、结构化分段总结

  • Pipelines 的定义

    • 一种新上线的服务组件,用于实现 ML 工作流程自动化。
  • 应用场景举例

    • 可覆盖数据提取、验证、处理等常见流程,既支持依次执行,也适用于任务并发处理。
  • 动手建议

    • 推荐实际操作,结合文档深入理解和应用 Pipelines。

三、知识点小结

  • Pipelines 让机器学习的复杂多步骤流程,变得易于自动化和运维。
  • 使用 Pipelines 可降低人为差错、提升工作流效率,实现更规范与可追溯的模型开发流程。
  • 官方文档是上手实践的最佳参考,强烈建议同步查阅与实操。

OCI Data Flow 与 Data Science 集成模块

  • 本模块介绍与 OCI Data Science 相关的服务,包括 Spark、Data Flow 以及与数据科学服务的集成

二、Oracle Cloud Infrastructure Data Flow 简介

  • Data Flow 是为开发者和数据科学家量身打造的可扩展 Spark 托管平台
  • 支持运行 Apache Spark 应用和大规模批量作业,适合处理大数据、机器学习、特征工程、数据清洗等任务
  • Spark 支持多语言(PySpark, Scala, Java, SQL),并可利用 MLlib 库实现分布式机器学习模型训练
  • Data Flow 全托管、Serverless,无需自建或管理 Spark 集群,运行按需调度,完全自动化

三、Data Flow 核心功能和架构

  • 四大核心组件
    1. Library:应用与依赖的中心仓库
    2. Application:可重用的 Spark 应用模板(包含依赖、参数、默认资源规格)
    3. Run:一次对应用的具体运行,自动保存输出、日志、统计信息
    4. Data Flow 日志:自动采集、保存至对象存储,支持 UI、API、CLI 访问
  • Data Flow 适合大数据对象存储场景,支持自带 connector 也可对其它数据源读写
  • 应用运行时无需担心底层资源,平台自动弹性分配 driver/executor 及网络隔离
  • 强安全:运行完全隔离、自动加密、IAM 权限对接

四、开发与上线实践建议

  • 推荐用 Data Science Notebook 开发 PySpark,调试只载入样本数据;转为 Python 脚本后用 Spark submit 本地测试,再提交给 Data Flow
  • 正式运行时调整脚本,使其全量处理数据、剔除 notebook 中多余代码
  • 若用到 pandas、matplotlib、scikit-learn 等第三方库,需在 Data Flow 环境中显式添加
  • 保持 notebook 代码的模块化和易维护性,实际部署前仔细校验依赖

五、对 AI/ML 和大数据的价值

  • Spark/OCI Data Flow 支持 ETL、批量数据处理、特征工程和大规模模型训练
  • 为数据科学工作流带来高度自动化、易扩展和安全高可用的公有云支持
  • 与 OCI Data Science、ADS(Accelerated Data Science SDK)集成,可用 notebook 便捷管理 Data Flow 应用、日志、运行、参数和第三方依赖

六、最佳实践建议

  1. 开发时只读样本数据,避免 notebook 直接全量拉取
  2. 用 notebook 交互迭代开发,最后转为 Python 脚本批量运行
  3. 本地用 spark-submit 命令测试无误后再上传 Data Flow
  4. 移除所有非 Spark 依赖或明确打包
  5. 结合 ADS SDK 管理和自动化 Data Flow 作业

七、知识点小结

  • Data Flow 让 Spark 大数据/AI/ML 作业“即用即停”,资源弹性、无复杂运维
  • 日志完整、隔离与安全性高,便于追查问题和合规管理
  • 源码开发、部署与权限管理一体化,易于企业级团队协作

Oracle Open Data 平台


1. Oracle Open Data 简介及优势

  • 可信开放数据:平台提供可信、可访问的数据集,内容经过整理、管理并已准备好可直接使用。
  • 数据来源权威:所有数据集均来自全球顶级机构,例如 NASA(美国航空航天局)、DeepMind、Stanford(斯坦福大学)等。
  • 易操作性:Open Data 平台界面友好,支持便捷的浏览、检索和下载数据。

2. 平台特性

  • 数据仓库持续更新:平台定期更新数据资源,确保用户可获得最前沿的数据集。
  • 配套示例丰富:每个数据集都配有示例代码和工具使用说明,便于数据消费和实验复现。
  • 多领域覆盖:涵盖多个行业和学科领域,服务于科研、开发、数据科学等广泛场景。

3. 访问方式与操作

  • 访问地址:opendata.oraclecloud.com
  • 点击 Explore Repository(浏览仓库)按钮,即可进入完整数据集目录。
  • 支持在线浏览、快速检索、直接下载。

4. 推荐使用场景

  • 作为公开、权威、可复现的数据源,为机器学习、科学分析、教育研究等提供数据基础与案例。
  • 利用代码和工具示例,推动数据的易用性和项目的可复用性。

OCI Data Labeling Service(数据标注服务)模块


1. 什么是数据标注(Data Labeling)?

  • 定义:数据标注是对图像或文本数据进行属性识别并用标签进行注释的过程。如:为老虎、签名字样的图片打标签,便于机器学习模型学习识别。
  • 作用:有标签的数据是训练 AI 或机器学习模型的前提条件。没有高质量标签,无法自动化分析数据或训练定制化模型。
  • 应用:如拥有100张已标注老虎图片,AI系统可学习如何在未标注图片中识别老虎。

2. OCI Data Labeling Service 概述

  • 核心资源:数据集(Data Sets),由具体数据记录(图片/文本/文档)及其标签组成。
  • 互通性:标注后的数据可与 OCI 各类 AI、数据科学服务无缝集成,用于支持监督式机器学习任务(如 OCI Vision 自定义模型训练)。
  • 便捷易用:可快速上传、标注原始数据集,配置简单;支持交互式 UI 和 API 标签工具。

3. 主要用户角色

  • 数据科学家
    • 组装数据集,利用可视化 UI 工具进行标签标注与校验。
    • 导出标注数据用于构建与训练自定义深度学习模型。
  • 开发者与工程师
    • 构建自己的标注数据集(如用于图片识别模型微调及部署)。
    • 组装-标注-交付流程高效,方便后续集成到 AI 服务项目。

4. 行业应用举例

  • 媒体与娱乐:社交媒体/客户反馈内容审查与情感分析
  • 电商和零售:分析客户行为,提升推荐系统精度
  • 医疗:分析海量医学影像,提升异常识别准确率
  • 保险、制造业、政府等:均有丰富的标注数据需求

5. 数据标注在 AI/ML 生命周期中的作用

  • 标注发生在 AI/ML 流程早期,是定制模型训练的前提,尤其是处理半结构化或非结构化数据时。
  • 高质量的数据标注是后续模型效果的基础,低质量标注会造成模型训练、推理不精准乃至失败。
  • MLOps 是一个循环迭代过程,模型训练-评价-新数据标注-再训练,是常态。

6. 实践与平台能力

  • 数据标注服务支持从 UI 或 API 上传图片/文本/文档并高效标注。
  • 标注数据可导出,直接用于后续的 AI、Data Science 服务,简化端到端的模型开发流程。
  • 若精度未达要求,可随时补充或修正标注,帮助模型持续优化,适应数据漂移。

7. 总结

  • 数据标注是 AI/ML 项目的基石,高质量的标注数据集能显著提升模型定制训练与部署的效果。
  • OCI Data Labeling Service 提供了快速、集成度高、支持多种工作流的数据标注与管理平台,是企业和个人构建高效 AI 流程的重要工具。

posted @ 2025-07-09 15:32  sekkoo  阅读(148)  评论(0)    收藏  举报