GPU加速数据科学之-如何在GPU实例上使用RAPIDS加速机器学习任务

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 本文介绍了如何在GPU实例上基于NGC环境使用RAPIDS加速库,加速数据科学和机器学习任务,提高计算资源的使用效率。 ## 背景信息 {#section_koh_7rx_iga .section} RAPIDS,全称Real-time Acceleration Platform for Integrated Data Science,是NVIDIA针对数据科学和机器学习推出的GPU加

本文介绍了如何在GPU实例上基于NGC环境使用RAPIDS加速库,加速数据科学和机器学习任务,提高计算资源的使用效率。

背景信息 {#section_koh_7rx_iga .section}

RAPIDS,全称Real-time Acceleration Platform for Integrated Data Science,是NVIDIA针对数据科学和机器学习推出的GPU加速库。更多RAPIDS信息请参见官方网站

NGC,全称NVIDIA GPU CLOUD,是NVIDIA推出的一套深度学习生态系统,供开发者免费访问深度学习和机器学习软件堆栈,快速搭建相应的开发环境。NGC网站提供了RAPIDS的Docker镜像,预装了相关的开发环境。

JupyterLab是一套交互式的开发环境,帮助您高效地浏览、编辑和执行服务器上的代码文件。

Dask是一款轻量级大数据框架,可以提升并行计算效率。

本文提供了一套基于NVIDIA的RAPIDS Demo代码及数据集修改的示例代码,演示了在GPU实例上使用RAPIDS加速一个从ETL到ML Training端到端任务的过程。其中,ETL时使用RAPIDS的cuDF,ML Training时使用XGBoost。本文示例代码基于轻量级大数据框架Dask运行,为一套单机运行的代码。

说明: NVIDIA官方RAPIDS Demo代码请参见Mortgage Demo

RAPIDS预装镜像已经发布到阿里云镜像市场,创建GPU实例时,您可以在镜像市场中搜索NVIDIA RAPIDS并使用RAPIDS预装镜像。

说明: 该RAPIDS预装镜像使用Ubuntu 16.04 64-bit操作系统。

gn5优惠活动详情请参见异构计算GPU实例活动页

前提条件 {#section_qz1_22r_qt8 .section}

  • 注册阿里云账号并完成实名认证,请参见阿里云账号注册流程个人实名认证
  • NGC注册页面注册NGC账号。
  • 获取NGC API Key。

    1. 登录NGC网站
    2. 前往CONFIGURATION,单击Get API Key
    3. 单击Generate API Key
    4. 在Generate a New API Key中,单击Confirm

      **说明:** 新的NGC API Key会覆盖旧的NGC API Key。如果您已持有NGC API Key,请确保不再需要旧的NGC API Key。
      
    5. 复制API Key并保存到本地。

      ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687533546989_zh-CN.png)
      

操作步骤 {#section_4st_emv_868 .section}

如果您创建GPU实例时使用了RAPIDS预装镜像,只需运行RAPIDS Demo,从启动JupyterLab服务开始操作即可。

如果您创建GPU实例时没有使用RAPIDS预装镜像,按照以下步骤使用RAPIDS加速机器学习任务:

  1. 获取RAPIDS镜像下载命令
  2. 部署RAPIDS环境
  3. 运行RAPIDS Demo

步骤一:获取RAPIDS镜像下载命令 {#section_6nn_fh6_3ro .section}

  1. 登录NGC网站
  2. 打开MACHINE LEARNING页面,单击RAPIDS镜像。

  3. 获取docker pull命令。

    本文示例代码基于RAPIDS 0.8版本镜像编写,因此在运行本示例代码时,使用Tag为0.8版本的镜像。实际操作时,请选择您匹配的版本。

    1. 选择Tags页签。

      ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687533747242_zh-CN.png)
      
    2. 找到并复制Tag信息。本示例中,选择0.8-cuda10.0-runtime-ubuntu16.04-gcc5-py3.6

      ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687533747223_zh-CN.png)
      
    3. 返回页面顶部,复制Pull Command中的命令到文本编辑器,将镜像版本替换为对应的Tag信息,并保存。 本示例中,将cuda9.2-runtime-ubuntu16.04替换为0.8-cuda10.0-runtime-ubuntu16.04-gcc5-py3.6

      保存的docker pull命令用于在[步骤二](#section_4tf_rho_1gy)中下载RAPIDS镜像。
      
      ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687533746842_zh-CN.png)
      

步骤二:部署RAPIDS环境 {#section_4tf_rho_1gy .section}

  1. 创建一台GPU实例。

    详细步骤请参见使用向导创建实例

    • 实例:RAPIDS仅适用于特定的GPU型号(采用NVIDIA Pascal及以上架构),因此您需要选择GPU型号符合要求的实例规格,目前有gn6i、gn6v、gn5和gn5i,详细的GPU型号请参见实例规格族。建议您选择显存更大的gn6i、gn6v或gn5实例。本示例中,选用了显存为16 GB的GPU实例。
    • 镜像:在镜像市场中搜索并使用NVIDIA GPU Cloud VM Image

    • 公网带宽:选择分配公网IPv4地址或者在实例创建成功后绑定EIP地址
    • 安全组:选择的安全组需要开放以下端口:

      • TCP 22 端口,用于SSH登录
      • TCP 8888端口,用于支持访问JupyterLab服务
      • TCP 8787端口、TCP 8786端口,用于支持访问Dask服务
  2. 连接GPU实例。

    连接方式请参见连接Linux实例

  3. 输入NGC API Key后按回车键,登录NGC容器环境。

  4. (可选)运行nvidia-smi查看GPU型号、GPU驱动版本等GPU信息。

    建议您了解GPU信息,预判规避潜在问题。例如,如果NGC的驱动版本太低,新Docker镜像版本可能会不支持。

  5. 运行在步骤一中获取的docker pull命令下载RAPIDS镜像。

    docker pull nvcr.io/nvidia/rapidsai/rapidsai:0.8-cuda10.0-runtime-ubuntu16.04-gcc5-py3.6
  6. (可选)查看下载的镜像。

    建议您查看Docker镜像信息,确保下载了正确的镜像。

    docker images
  7. 运行容器部署RAPIDS环境。

    docker run --runtime=nvidia \
            --rm -it \
            -p 8888:8888 \
            -p 8787:8787 \
            -p 8786:8786 \
            nvcr.io/nvidia/rapidsai/rapidsai:0.8-cuda10.0-runtime-ubuntu16.04-gcc5-py3.6

步骤三:运行RAPIDS Demo {#section_jlv_sqz_hzk .section}

  1. 在GPU实例上下载数据集和Demo文件。

    # Get apt source address and download demos.
    source_address=$(curl http://100.100.100.200/latest/meta-data/source-address|head -n 1)
    source_address="${source_address}/opsx/ecs/linux/binary/machine_learning/"
    cd /rapids
    wget $source_address/rapids_notebooks_v0.8.tar.gz
    tar -xzvf rapids_notebooks_v0.8.tar.gz
    cd /rapids/rapids_notebooks_v0.8/xgboost
    wget $source_address/data/mortgage/mortgage_2000_1gb.tgz
  2. 在GPU实例上启动JupyterLab服务。

    推荐直接使用命令启动。

    # Run the following command to start JupyterLab and set the password.
    cd /rapids/rapids_notebooks_v0.8/xgboost
    jupyter-lab --allow-root --ip=0.0.0.0 --no-browser --NotebookApp.token='YOUR PASSWORD'
    # Exit JupyterLab.
    sh ../utils/stop-jupyter.sh
-   除使用命令外,您也可以执行脚本`sh ../utils/start-jupyter.sh`启动jupyter-lab,此时无法设置登录密码。
-   您也可以连续按两次`Ctrl+C`退出JupyterLab服务。
  1. 打开浏览器,在地址栏输入http://您的GPU实例IP地址:8888远程访问JupyterLab 。

    说明: 推荐使用Chrome浏览器。

    如果您在启动JupyterLab服务时设置了登录密码,会跳转到密码输入界面。

  2. 运行NoteBook代码。

    该案例是一个抵押贷款回归的任务,详细信息请参见代码执行过程。登录成功后,可以看到NoteBook代码的代码包括以下内容:

    • xgboost_E2E.ipynb文件: XGBoost Demo文件。双击文件可以查看文件详情,单击下图中的执行按钮可以逐步执行代码,每次执行一个Cell。

      ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687534346845_zh-CN.png)
      
    • mortgage_2000_1gb.tgz文件: 2000年的抵押贷款回归训练数据(1G分割的perf文件夹下的文件不会大于1G,使用1G分割的数据可以更有效的利用GPU显存)。

代码执行过程 {#section_88w_0mw_i43 .section}

该案例基于XGBoost演示了数据预处理到训练的端到端的过程,主要分为三个阶段:

  • ETL(Extract-Transform-Load):主要在GPU实例上进行。将业务系统的数据经过抽取、清洗转换之后加载到数据仓库。
  • Data Conversion:在GPU实例上进行。将在ETL阶段处理过的数据转换为用于XGBoost训练的DMatrix格式。
  • ML-Training:默认在GPU实例上进行。使用XGBoost训练梯度提升决策树 。

NoteBook代码的执行过程如下:

  1. 准备数据集。

    本案例的Shell脚本会默认下载2000年的抵押贷款回归训练数据(mortgage\_2000\_1gb.tgz)。
    
    如果您想获取更多数据用于XGBoost模型训练,可以设定参数download\_url指定下载路径,具体下载地址请参见[Mortgage Data](https://docs.rapids.ai/datasets/mortgage-data)。
    
    示例效果如下 :
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687534446846_zh-CN.png)
    
  2. 设定相关参数。

    |参数名称|说明|
    |----|--|
    |start\_year|指定选择训练数据的起始时间,ETL时会处理start\_year到end\_year之间的数据。|
    |end\_year|指定选择训练数据的结束时间,ETL时会处理start\_year到end\_year之间的数据。|
    |train\_with\_gpu|是否使用GPU进行XGBoost模型训练,默认为True。|
    |gpu\_count|指定启动worker的数量,默认为1。您可以按需要设定参数值,但不能超出GPU实例的GPU数量。|
    |part\_count|指定用于模型训练的performance文件的数量,默认为 2 \* gpu\_count。如果参数值过大,在Data Conversion阶段会报错超出GPU内存限制,错误信息会在NoteBook后台输出。|
    
    示例效果如下:
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687534546847_zh-CN.png)
    
  3. 启动Dask服务。

    代码会启动Dask Scheduler,并根据gpu\_count参数启动worker用于ETL和模型训练。启动Dask服务后,您也可以通过Dask Dashboard直观地监控任务,打开方法请参见[Dask Dashboard](#section_x15_g1t_2f7)。
    
    示例效果如下:
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687534746848_zh-CN.png)
    
  4. 启动ETL。

    ETL阶段会进行到表关联、分组、聚合、切片等操作,数据格式采用cuDF库的DataFrame格式(类似于pandas的DataFrame格式)。
    
    示例效果如下:
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687534846849_zh-CN.png)
    
  5. 启动Data Conversion。

    将DataFrame格式的数据转换为用于XGBoost训练的DMatrix格式,每个worker处理一个DMatrix对象。
    
    示例效果如下:
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687535146850_zh-CN.png)
    
  6. 启动ML Training。

    使用dask-xgboost启动模型训练,dask-xgboost负责多个dask worker间的通信协同工作,底层仍然调用xgboost执行模型训练。
    
    示例效果如下:
    
    ![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/216663/156687535646851_zh-CN.png)
    

Dask Dashboard {#section_x15_g1t_2f7 .section}

Dask Dashboard支持任务进度跟踪、任务性能问题识别和故障调试。

Dask服务启动后,在浏览器地址栏中访问http://您的GPU实例IP地址:8787/status即可进入Dashboard主界面。

相关函数 {#section_whh_v8f_nnc .section}

函数功能 函数名称
下载文件 def download_file_from_url(url, filename):
解压文件 def decompress_file(filename, path):
获取当前机器的GPU个数 def get_gpu_nums():
管理GPU内存 - def initialize_rmm_pool():
  • def initialize_rmm_no_pool():
  • def run_dask_task(func, **kwargs):

|
|提交DASK任务| - def process_quarter_gpu(year=2000, quarter=1, perf_file=""):

  • def run_gpu_workflow(quarter=1, year=2000, perf_file="", **kwargs):

|
|使用cuDF从CSV中加载数据| - def gpu_load_performance_csv(performance_path, **kwargs):

  • def gpu_load_acquisition_csv(acquisition_path, **kwargs):
  • def gpu_load_names(**kwargs):

|
|处理和提取训练数据的特征| - def null_workaround(df, **kwargs):

  • def create_ever_features(gdf, **kwargs):
  • def join_ever_delinq_features(everdf_tmp, delinq_merge, **kwargs):
  • def create_joined_df(gdf, everdf, **kwargs):
  • def create_12_mon_features(joined_df, **kwargs):
  • def combine_joined_12_mon(joined_df, testdf, **kwargs):
  • def final_performance_delinquency(gdf, joined_df, **kwargs):
  • def join_perf_acq_gdfs(perf, acq, **kwargs):
  • def last_mile_cleaning(df, **kwargs):

|

更多信息 {#section_2v1_q0o_h4k .section}

GPU实例和RAPIDS组合适用于加速更多类型的任务,请参见在GPU实例上使用RAPIDS加速图像搜索任务

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
3月前
|
机器学习/深度学习 编解码 人工智能
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
随着人工智能、大数据和深度学习等领域的快速发展,GPU服务器的需求日益增长。阿里云的GPU服务器凭借强大的计算能力和灵活的资源配置,成为众多用户的首选。很多用户比较关心gpu云服务器的收费标准与活动价格情况,目前计算型gn6v实例云服务器一周价格为2138.27元/1周起,月付价格为3830.00元/1个月起;计算型gn7i实例云服务器一周价格为1793.30元/1周起,月付价格为3213.99元/1个月起;计算型 gn6i实例云服务器一周价格为942.11元/1周起,月付价格为1694.00元/1个月起。本文为大家整理汇总了gpu云服务器的最新收费标准与活动价格情况,以供参考。
阿里云gpu云服务器租用价格:最新收费标准与活动价格及热门实例解析
|
2月前
|
机器学习/深度学习 存储 人工智能
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
阿里云的GPU云服务器产品线在深度学习、科学计算、图形渲染等多个领域展现出强大的计算能力和广泛的应用价值。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
|
3月前
|
Serverless API 异构计算
函数计算产品使用问题之gpu实例函数该如何创建
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
并行计算 API 数据处理
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
GPU(图形处理单元)因其强大的并行计算能力而备受关注。与传统的CPU相比,GPU在处理大规模数据密集型任务时具有显著的优势。
|
4月前
|
存储 监控 Serverless
函数计算产品使用问题之T4和A10 GPU实例的区别有哪些
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
4月前
|
弹性计算 文字识别 异构计算
印刷文字识别使用问题之如何创建GPU实例
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
存储 人工智能 编解码
阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考
随着人工智能、高性能计算等领域的快速发展,GPU云服务器因其强大的计算能力和灵活的资源分配方式,成为越来越多企业和个人用户的首选。2024年,阿里云针对GPU云服务器推出了新的收费标准及活动,gn6v、gn7i、gn6i等实例的gpu云服务器有优惠,本文为大家介绍2024年,阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考。
阿里云gpu云服务器最新收费标准、活动价格与实例规格选择参考
|
5月前
|
运维 Serverless 文件存储
Serverless 应用引擎产品使用合集之函数实例运行期间相关的依赖资源(vcpu、临时磁盘、GPU)是否会随函数运行完毕而释放
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
机器学习/深度学习 弹性计算 自然语言处理
【阿里云弹性计算】深度学习训练平台搭建:阿里云 ECS 与 GPU 实例的高效利用
【5月更文挑战第28天】阿里云ECS结合GPU实例为深度学习提供高效解决方案。通过弹性计算服务满足大量计算需求,GPU加速训练。用户可按需选择实例规格,配置深度学习框架,实现快速搭建训练平台。示例代码展示了在GPU实例上使用TensorFlow进行训练。优化包括合理分配GPU资源和使用混合精度技术,应用涵盖图像识别和自然语言处理。注意成本控制及数据安全,借助阿里云推动深度学习发展。
258 2
|
5月前
|
缓存 Serverless API
函数计算产品使用问题之GPU实例留运行但未进行 GPU 计算,是否还会计费
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
下一篇
无影云桌面