注意:说明:
一、开通账号与产品
·DLC 账号与产品开通功能均需腾讯云主账号进行开通,主账号完成后,默认主账号下所有子账号均可使用。如果需要调整,可通过 CAM 功能进行调整。具体操作指引请参见 新用户开通全流程。
·WeData 账号与产品开通请参见 准备工作、数据湖计算 DLC(DLC)。
·WeData 的 MLflow 服务开通为主账号粒度,一个主账号操作完成后,该主账号下的所有子账号均可使用。
·需要提供客户的地域信息、APPID 、主账号 UIN 、VPC ID 和子网 ID ,其中 VPC 和子网信息用于 MLflow 服务的网络打通操作。
注意:说明:
注意:因产品中多个功能需要进行网络打通操作,为确保网络连通性,建议后续购买执行资源组、创建 Notebook 工作空间等操作都在这一个 VPC 和子网中进行。
二、在 DLC 购买 GPU 计算资源
在产品服务开通完成后,你可先通过数据湖计算 DLC 购买 GPU 计算资源。
1. 进入数据湖计算 DLC > 标准引擎页面。
2. 选择“创建资源”。
3. 按需购买包年包月标准引擎,计算类型选择 GPU 类型,可选择不同规格的机器类型及机器数量,型号详情及价格参考 计费文档。
注意:说明:
注意:1. 购买账号需要有财务权限或是主账号进行购买。
注意:2. GPU 计算资源的计费模式当前仅支持包年包月模式。
注意:3. 购买成功后,首次启动会有数分钟的等待时间,如长时间未能完成启动,请 提交工单。
注意:4. GPU 计算引擎暂不支持数据探索和数据作业相关的业务场景。
三、创建机器学习资源组
标准引擎购买完成后,返回引擎管理页面,你需要在该引擎下,创建机器学习资源组,才能开始进行机器学习相关功能。
1. 单击管理资源组/引擎名称。
2. 进入资源组页面后,单击左上角创建资源组按钮。
3. 创建机器学习资源组类型。
·业务场景选择:机器学习。
·框架类型:你可根据实际业务场景,选择适合的框架创建:ML 开源框架(支持单节点计算模式)和 Spark MLlib(支持 Spark 集群模式)
注意:1. 对于 ML 开源框架,若你需要使用 GPU 资源,内置镜像请选择 tensorflow2.20-gpu-py311-cu124 或 pytorch2.6-gpu-py311-cu124 。
注意:2. 对于 Spark MLlib 框架,若你需要使用 GPU 资源,内置镜像请选择 spark3.5-tensorflow2.20-gpu-py311-cu124 或 spark3.5-pytorch2.6-gpu-py311-cu124 。
·资源配置:可按需选择。
注意:1. 若你选择 ML 开源框架,GPU 资源支持1(卡)步长分配;
注意:2. 若你选择 Spark MLlib 框架,GPU 资源支持1(卡)步长分配。
配置完成后,单击确认返回资源组列表页。数分钟后,可单击列表页上方刷新按钮进行确认。
四、前往 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. 在 WeData 控制台,进入“项目列表 > 项目 > 离线开发 > Notebook 探索 ”,并创建或使用已有工作空间。
2. 创建工作空间时,请选择已购买的 GPU 资源的引擎。
3. 完成创建后,可进入创建的工作空间进行后续操作。
八、创建 Notebook 文件
在左侧资源管理器可以创建文件夹和 Notebook 文件,注意:Notebook 文件需要以(.ipynb)结尾。在资源管理器中,预先内置了一个 demo Notebook 文件,支持用户开箱即用。
九、选择内核(kernel)
1. 在对应的 Notebook 文件右上角单击选择内核。
2. 单击选择内核后,在弹出的下拉选项中选择“ DLC 资源组”。
3. 单击 DLC 资源组后,在下一级选项中选择 DLC 数据引擎中按需选择你创建的资源组。使用这篇档提供的 demo 进行体验时请选择 ML 开源框架中镜像为 TensorFlow 类型的资源组。内核选择中的内核命名规则为:框架类型 – (机器学习资源组名称),选择时可按你创建机器学习的命名及框架类型实现区分。
十、运行 Notebook 文件
1. 完成内核选择后,进行页面刷新,在对应的 Notebook 文件中单击全部运行或单独运行对应的代码块后,页面将弹出内核配置窗口,此时可编辑/确认初始化配置。
2. 执行实践教程:利用 TensorFlow 矩阵乘法操作对 GPU 进行负载测试,集成实时资源监控功能,并输出计算性能指标。
import tensorflow as tfimport timeimport subprocessimport threadingimport osdef setup_gpu(): gpus = tf.config.list_physical_devices("GPU") if not gpus: raise RuntimeError("No GPU detected") for gpu in gpus: tf.config.experimental.set_memory_growth(gpu, True) print(f"GPUs detected: {len(gpus)}")def monitor_gpu(interval=5, duration=30): end_time = time.time() + duration while time.time() < end_time: try: # Get nvidia-smi output and extract only the essential line result = subprocess.run(['nvidia-smi', '–query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu', '–format=csv,noheader,nounits'], capture_output=True, text=True, check=True) # Parse the output to get clean values gpu_util, mem_used, mem_total, temp = result.stdout.strip().split(', ') # Format the output in a single compact line print(f"GPU: {gpu_util}% | Mem: {mem_used}/{mem_total}MB | Temp: {temp}C") except Exception as e: print(f"Monitor error: {e}") time.sleep(interval)def run_gpu_stress(size=4096, duration=30): with tf.device("/GPU:0"): a = tf.random.normal([size, size], dtype=tf.float32) b = tf.random.normal([size, size], dtype=tf.float32) @tf.function def matmul_step(): return tf.matmul(a, b) _ = matmul_step() # warm-up print(f"Running GPU stress for {duration}s at full capacity") start = time.time() iters = 0 while time.time() – start < duration: _ = matmul_step() iters += 1 print(f"Completed {iters} iterations in {time.time() – start:.2f}s")if __name__ == "__main__": try: setup_gpu() monitor_thread = threading.Thread(target=monitor_gpu, args=(5, 30)) monitor_thread.start() run_gpu_stress(size=4096, duration=30) monitor_thread.join() print("Test completed successfully") except Exception as e: print(f"Error: {e}")