文档中心>数据湖计算 DLC>实践教程>DATA+AI>DLC + Wedata 实现机器学习实践教程

DLC + Wedata 实现机器学习实践教程

最近更新时间:2025-08-05 14:20:22

我的收藏
数据湖计算 DLC 支持通过 spark 引擎创建机器学习资源组的方式,协助用户进行模型训练等机器学习场景。
通过本篇文档,您可根据我们提供的 demo 数据集与代码示例,体验在 Scikit-learn 的框架下进行模型训练的实践体验。
说明:
资源组:Spark 标准引擎计算资源的二级队列划分,资源组隶属于父级标准引擎且同一引擎下的资源组彼此资源共享。
DLC Spark 标准引擎的计算单元(CU)可按需被划分到多个资源组中,并设置每个资源组可使用CU数量的最小值和上限、启停策略、并发数和动静态参数等,从而满足多租户、多任务等复杂场景下的计算资源隔离与工作负载的高效管理。实现不同类别任务间的资源隔离,避免个别大查询将资源长期抢占。
目前 DLC 机器学习资源组、WeData Notebook 探索、机器学习均为开白功能,如需使用,请 提交工单 联系 DLC 与 WeData 团队开通机器学习资源组、Notebook、MLFlow 服务。

开通账号与产品

开通账号与产品

DLC 账号与产品开通功能均需腾讯云主账号进行开通,主账号完成后,默认主账号下所有子账号均可使用。如果需要调整,可通过 CAM 功能进行调整。具体操作指引请参见 新用户开通全流程
Wedata 账号与产品开通请参见 准备工作数据湖计算 DLC(DLC)
Wedata的 MLflow 服务开通为主账号粒度,一个主账号操作完成后,该主账号下的所有子账号均可使用。
需要提供客户的地域信息、APPID、主账号UIN、VPC ID和子网ID,其中 VPC 和子网信息用于 MLflow 服务的网络打通操作。
说明:
因产品中多个功能需要进行网络打通操作,为确保网络连通性,建议后续购买执行资源组、创建 Notebook 工作空间等操作都在这一个 VPC 和子网中进行。

配置数据访问策略

数据访问策略(CAM role arn)是为了保障数据作业运行过程中访问的数据源及对象存储 COS 上的数据安全,用户在访问管理(CAM)上对数据访问权限进行配置的策略。
在数据湖计算 DLC 中配置数据作业时,需指定对应的数据访问策略,以保证数据安全。
配置方式请参见 配置数据访问策略

在 DLC 购买计算资源

在产品服务开通完成后,您可先通过数据湖计算 DLC 购买计算资源。如果您需要使用机器学习功能,请确认购买的引擎类型为:标准引擎-spark,内核版本为:Standard-S 1.1。
2. 选择“创建资源”。
3. 购买标准引擎-spark,内核版本选择:Standard1.1。
说明:
1. 购买账号需要有财务权限或是主账号进行购买。
2. 计费模式您可根据您的业务场景进行选择。
3. 集群规格建议选择64CU以上。
4. 购买成功后,首次启动会有数分钟的等待时间,如长时间未能完成启动,请 提交工单


创建机器学习资源组

标准引擎购买完成后,返回引擎管理页面,您需要在该引擎下,创建机器学习资源组,才能开始进行机器学习相关功能。
注意:
资源组创建完成后,不支持编辑更改,可通过删除重新创建的方式进行管理。
1. 单击管理资源组

2. 进入资源组页面后,单击左上角创建资源组按钮。
3. 创建机器学习资源组类型。
说明:
数据湖计算 DLC AI 资源组目前支持通过:Scikit-learn(1.6.0)、TensorFlow(2.18.0)、PyTorch(2.5.1)、Python(3)、Spark MLlib(3.5)框架执行机器学习。
业务场景选择:机器学习。
框架类型:您可根据实际业务场景,选择适合的框架创建。
如果您需要体验我们提供的demo,请选择ML开源框架,镜像包请选择:scikit-learn-v1.6.0。
资源配置:可按需选择。
配置完成后,单击确认返回资源组列表页。数分钟后,可单击列表页上方刷新按钮进行确认。


上传机器学习数据集至 COS

如果您需要通过数据湖计算 DLC 与 Wedata 的方式进行机器学习,目前仅支持数据上云的方式进行交互。我们推荐您使用对象存储进行组合使用。
说明:
目前暂支持通过 spark 直接读取 cos 数据。
如果有其他框架诉求,目前绕行方案:先把数据上传至COS > 下载至本地生成本地文件,再进行学习操作。该绕行方案,可能会出现上传及下载时间较长的情况出现。
该功能优化我们正在开发支持中。
1. 开通 对象存储 产品服务并创建存储桶,开通方式请参见 控制台快速入门
2. 登录 对象存储,选择存储桶,上传该数据集。
3. 上传完成后,进入元数据管理,单击创建数据目录,或使用已有数据目录上传外表。
4. 进入 DLC 控制台 > 数据管理,单击数据库 tab 页。
5. 单击创建数据库,命名为:database_testnotebook。
6. 进入创建好的数据库,单击创建外表。
注意:
请留意您上传外表的数据库表名称,在 Notebook 上会通过 select 调用库、表名称。

7. 选择 cos 存储桶路径,找到 demo 数据集。
8. 数据格式选择为 csv,并进行相关配置。

9. 创建表名称为:demo_test_sklearn。
10. 创建完成后,单击确认返回。
您还可以通过 SQL 执行,详情请参见 建表实践 > 创建 CSV 格式外表
CREATE TABLE database_testnotebook.demo_test_sklearn (
at STRING COMMENT 'from deserializer',
v STRING COMMENT 'from deserializer',
ap STRING COMMENT 'from deserializer',
rh STRING COMMENT 'from deserializer',
pe STRING COMMENT 'from deserializer')
USING csv
LOCATION 'cosn://your cos location'

前往 Wedata-Notebook 功能进行 demo 实践

资源组与 demo 数据集创建完成后,前往 Wedata 通过 Notebook 和 MLFlow 进行模型训练实践。

创建 WeData 项目并关联 DLC 引擎

1. 创建项目或选择已有的项目,详情请参见 项目列表
2. 在配置存算引擎中选择所需的 DLC 引擎。

购买执行资源组并关联项目

如果您需要在编排空间中周期性调度 Notebook 任务,请购买调度资源组并与指定项目进行关联。详情请参见 调度资源组配置
操作步骤:
1. 进入“执行资源组 > 调度资源组 > 标准调度资源组”,单击创建
2. 资源组配置。
地域:调度资源组所在地域需要与存算引擎所在地域保持一致,例如购买了国际站-新加坡地域的DLC引擎,则需要购买相同地域的调度资源组。
VPC 和子网:建议直接选择1.1中的 VPC 和子网,如选择其他 VPC 和子网,需要确保所选 VPC 和子网与1.1中的 VPC 和子网之间网络互通。
规格:按照任务量进行选择。
3. 创建完成后,在资源组列表的操作栏单击“关联项目”,将该调度资源组与所需使用的项目进行关联。

创建 Notebook 工作空间

1. 在项目中,选择数据治理功能,单击 Notebook 功能,并创建或使用已有工作空间。

2. 创建工作空间时,请选择购买标准 spark 引擎,standard1.1版本的引擎,勾选机器学习选项以及 MFlow 服务。

基本信息
属性项名称
属性项配置
引擎
选择一个您需要使用 Notebook 任务访问的 DLC 引擎。
当前项目项目管理中中绑定的 DLC 引擎。
DLC 数据引擎
选择一个您需要使用 Notebook 任务访问的 DLC 数据引擎。
机器学习
如果您选择的 DLC 数据引擎中含有“机器学习”类型的资源组,则会出现该选项,并默认选中。
网络
建议直接选择1.1中的 VPC 和子网,如选择其他 VPC 和子网,需要确保所选 VPC 和子网与1.1中的 VPC 和子网之间网络互通。
RoleArn
RoleArn为DLC引擎访问对象存储COS的数据访问策略(CAM role arn),详情请参见 配置数据访问策略
高级配置
MFlow 服务
使用 MFlow 管理实验和模型,默认为不勾选。
勾选后,则在 Notebook 任务中使用MFlow函数创建实验和机器学习,均会上报到1.1中部署的 MFlow 服务中,后续可以在机器学习 > 实验管理、模型管理中进行查看。

创建 Notebook 文件

在左侧资源管理器可以创建文件夹和Notebook文件,注意:Notebook文件需要以(.ipynb)结尾。在资源管理器中,预先内置了三个大数据系列教程,支持用户开箱即用。


选择内核(kernel)

1. 单击选择内核

2. 在弹出的下拉选项中选择“DLC 资源组”。

3. 在下一级选项中选择 DLC 数据引擎中的您创建的 Scikit-learn 资源组。

例如,上图选择的名为“machine learning -(测试 wedata_sklearn 资源组)”的资源组,与 DLC 数据引擎中的资源组名称一致:


运行 Notebook 文件

1. 确认初始化配置。

2. 执行实践教程:利用公开数据鸢尾花集进行演示,采用逻辑回归模型对不同类型的花分类,并对分类结果可视化。
注意:
在运行模型前,需安装必要的tencentcloud-dlc-connector,并完成相应配置。
#安装驱动
!pip install tencentcloud-dlc-connector
!pip install --upgrade 'sqlalchemy<2.0'

#安装版本
!pip install --upgrade pandas==2.2.3
!pip install numpy
!pip install matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
import tdlc_connector
from tdlc_connector import constants
import mlflow
mlflow.sklearn.autolog()

#使用 tdlc-connector 按照表方式访问
conn = tdlc_connector.connect(region="ap-***", #填入正确地址,如ap-Singapore,ap-Shanghai
secret_id="*******",
secret_key="*******",
engine="your engine",#填入购买的引擎名称
resource_group=None,
engine_type=constants.EngineType.AUTO,
result_style=constants.ResultStyles.LIST,
download=True
)
query = """
SELECT `sepal.length`, `sepal.width`,`petal.length`,`petal.width`,species FROM at_database_testnotebook.demo_test_sklearn
"""


#读取数据
iris = pd.read_sql(query, conn)
iris.head()
#划分数据集
X = iris[['petal.length', 'petal.width']].values
category_map = {
'setosa': 0,
'versicolor': 1,
'virginica': 2
}

y= iris['species'].replace(category_map)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1, stratify=y)
print('Labels count in y:', np.bincount(y))
print('Labels count in y_train:', np.bincount(y_train))
print('Labels count in y_test:', np.bincount(y_test))

#数据归一化
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))

#逻辑回归进行分类,可视化分类结果
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=100.0, random_state=1, solver='lbfgs', multi_class='ovr')
lr.fit(X_train_std, y_train)

plot_decision_regions(X_combined_std, y_combined,
classifier=lr, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()

#查看模型准确率
y_pred = lr.predict(X_test_std)
print(accuracy_score(y_test, y_pred))

前往 MFlow 查看训练结果与注册模型

1. 选择机器学习功能。

2. 查看实验记录,并选择最优训练结果注册为模型。