在 CloudShell 中开发部署人工智能计算

本文涉及的产品
文件存储 NAS,50GB 3个月
简介: Cloud Shell 正式集成 Jupyter Notebook 和 FastGPU,您可以在 Cloud Shell 中随时随地在线使用 Jupyter Notebook + FastGPU,方便快速的开发人工智能计算,并一键将人工智能计算构建在阿里云的 IAAS 资源上。

首先,可以试想一下,要在云上部署一个人工智能训练任务,需要做哪些工作?

大体的部署架构如上图所示。首先训练任务需要一个 GPU 的集群,里面需要配置智能训练所需的环境,还需要挂载 CPFS/NAS 这样的存储资源,来存储和共享训练数据。整个过程包括:购买 GPU 实例、购买挂载存储资源、配置实例环境、配置网络环、开发上传训练代码境等等。整个过程费时费力。

工欲善其事必先利其器,在 Cloud Shell 中使用 Jupyter Notebook + FastGPU,可以省时省力的帮助开发者完成开发和部署的工作。

FastGPU

针对人工智能训练的场景,阿里云提供了 FastGPU 工具,是一套构建在阿里云上的人工智能训练的部署工具,提供便捷的接口和自动化工具实现人工智能训练/推理计算在阿里云 IAAS 资源上的快速部署.它包含两套组件:

  • ncluster 运行时组件,它是个 python 库,提供便捷的 API 将线下的人工智能训练/推理脚本快速的部署在阿里云IAAS资源上进行计算
  • ecluster 命令行组件,提供便捷的命令行工具用于管理阿里云上人工智能计算的运行状态和集群的生命周期。

使用 FastGPU 进行人工智能训练,用户的起点(source)为数据和训练代码,FastGPU 组件将帮助用户自动完成中间训练过程,包括计算/存储/可视化资源的生命周期的管理等等,用户最终获取训练完成后的模型/日志等(destination)。

可以看到人工智能训练的全部流程(购买实例——启动实例——构建 gpu 环境——部署项目代码——启动训练——运行推理),通过 FastGPU 一个脚本就可以一键完成人工智能训练的整个个过程。整个脚本的编写也十分简单,通过 ncluster 的 make_job,可以创建所需要的资源,还可以方便的定义所需资源数量、实例类型、实例镜像等等。接着通过 upload 方法,可以将本地的文件上传到实例上去,最后通过 run 方法,可以在实例上执行任意命令。比如启动 training,启动 inferrence 等等。

最后通过 FastGPU 提供的第二个组件,ecluster 命令行,来管理任务和资源的运行状态和生命周期。例如启停任务,创建销毁资源等等。比如下图通过 ecluster ls 来展示所有训练的实例资源。

CloudShell

Cloud Shell 是阿里云提供的云命令行产品,它是免费的网页版命令行工具,允许用户使用浏览器启动命令行进而管理阿里云资源。在启动时会自动为用户分配一台 Linux 管理机,并预装 Aliyun CLI、Terraform、kubectl、fastgoup 等多种云管理工具。

针对人工智能训练的场景,使用 Cloud Shell 可以快速的完成云上的模型训练、资源管理、应用部署等工作,Cloud Shell 内置了 FastGPU,也是目前 FastGPU 唯一的使用渠道,我们可以通过 FastGPU 来购买配置 GPU 实例,完成训练模型的部署和运行。当然 Cloud shell 还具备很多便捷的特性,首先它是完全免费的,每次使用会自动创建一台 Linux 虚拟机,通过浏览器可以随时随地使用,同时支持绑定 NAS 等存储空间,保证个人文件的永久存储,同时内置了众多工具和开发环境,像数据库工具 Mysql Client、容器群里工具 Kubectl、Heml,编排工具 Terraform、Ansible、代码管理工具 Git 等等,开发环境包括 Node、Java、Go、Python,常用的基本都已经涵盖。最重要的是会保障使用的安全,每个用户分配的虚拟机都是完全独立、相互隔离的。

Jupyter Notebook

Jupyter Notebook 是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果等。使用 Jupyter Notebook 可以方便的一站式开发、部署和运行我们的训练任务。

由于 Jupyter Notebook 是基于网页使用的,因此 Cloud Shell 除了内置 Jupyter Notebook 外,也提供了网页预览的功能,我们可以在 Cloud Shell 直接使用。

首先启动 Jupyter Notebook

jupyter notebook --ip=0.0.0.0 --port=65000 --no-browser --NotebookApp.allow_origin=*

目前 Cloud Shell 只允许在固定几个端口上进行网页预览,因此 Jupyter Notebook 需要启动到支持预览的几个端口上。然后在 Cloud Shell 右上角,打开对应端口的网页预览。

实操示例

我们来看一个真实的使用 FastGPU 部署人工智能训练的代码示例

#!/usr/bin/env python

import argparse
import ncluster
import os
import time
from ncluster import ncluster_globals

# setting parameters
INSTANCE_TYPE = 'ecs.gn6v-c8g1.2xlarge'
NUM_GPUS = 1

ncluster.set_backend('aliyun')
parser = argparse.ArgumentParser()
parser.add_argument('--name', type=str, default='fastgpu-gtc-demo',
                    help="name of the current run, used for machine naming and tensorboard visualization")
parser.add_argument('--machines', type=int, default=1,
                    help="how many machines to use")
args = parser.parse_args()

def main():
  print('start job ...')
  start_time = time.time()

  # 1. create infrastructure
  supported_regions = ['cn-huhehaote', 'cn-shanghai', 'cn-zhangjiakou', 'cn-hangzhou', 'cn-beijing']
  assert ncluster.get_region() in supported_regions, f"required AMI {IMAGE_NAME} has only been made available in regions {supported_regions}, but your current region is {ncluster.get_region()} (set $ALYUN_DEFAULT_REGION)"
  
  ncluster_globals.set_should_disable_nas(True)

  job = ncluster.make_job(name=args.name,
                          run_name=f"{args.name}-{args.machines}",
                          num_tasks=args.machines,
                          instance_type=INSTANCE_TYPE,
                          disable_nas=True,
                          spot=True,
                          install_script='') 

  init_ncluster = time.time()
  print('init ncluster:', init_ncluster - start_time)

  # 2. upload code
  job.upload('GTC')
  job.run('cd GTC && conda activate torch_1.3_cu10.0_py36') 
  upload_data = time.time()
  print('upload_data time:', upload_data - init_ncluster)

  # 3. run the training job
  job.tasks[0].run('conda activate torch_1.3_cu10.0_py36')
  job.tasks[0].run('./train.sh 2>&1 | tee logs.log', non_blocking=False)
  train_time = time.time()
  print('training time:', train_time - unzip_time)

  # 4. run the inference job
  job.tasks[0].run('python inference.py 2>&1 | tee logs.inference.log', non_blocking=False)
  print('inference time:', time.time() - train_time)

  eclapse_time = time.time() - start_time
  print(f'training and inference deploy time is: {eclapse_time} s.')

  # 5. stop the instance (optional)
  # job.stop()

if __name__ == '__main__':
  main()

示例中首先定义了一些参数变量,包括实例类型,这里采用的是采用单机单卡 V100 的实例,配置了实例名称、实例数量,这里简单起见,就只生产 1 台机器。

然后通过 make_job 来创建基础设施,示例中没有设置 image_name 镜像名称,会使用默认镜像,是 CentOS 的阿里 AI 云加速镜像,里面集成了 TensorFlow/pytorch 等各种框架。然后关闭了 NAS 绑定,同时通过 Spot 来表示生产一个抢占式实例。

这里通过 run 方法,可以在生产出来的实例上执行命令。接着通过 upload 方法上传训练脚本的文件夹(示例中的训练脚本放到了 GTC 文件夹下)。upload 方法默认会将文件上传到实例的根目录下。然后开始 run training,先激活 python 特定深度学习环境。然后调用训练脚本:train.py。训练完成后,执行推理脚本。

最后,可以通过 stop 方法来停止任务,这时 GPU 实例也会被停止,停止实例本身不会产生费用了。

这样一个部署和运行的脚本就写好了。最后执行该脚本。FastGPU 会自动的检测有效可用的可用区,自动创建 VPC、虚拟机、安全组以及 ECS,并自动开始训练等等。

完整的操作示例,您可以参考云上极速部署手势识别训练任务和场景应用的直播视频。

目录
相关文章
|
13天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
1月前
|
人工智能 自然语言处理 自动驾驶
深入理解ChatGPT:下一代人工智能助手的开发与应用
【10月更文挑战第27天】本文深入探讨了ChatGPT的技术原理、开发技巧和应用场景,展示了其在语言理解和生成方面的强大能力。文章介绍了基于Transformer的架构、预训练与微调技术,以及如何定制化开发、确保安全性和支持多语言。通过实用工具如GPT-3 API和Fine-tuning as a Service,开发者可以轻松集成ChatGPT。未来,ChatGPT有望在智能家居、自动驾驶等领域发挥更大作用,推动人工智能技术的发展。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AIGC的底层技术:人工智能通用计算架构
探索AIGC的底层技术:人工智能通用计算架构
201 3
|
2月前
|
机器学习/深度学习 移动开发 自然语言处理
基于人工智能技术的智能导诊系统源码,SpringBoot作为后端服务的框架,提供快速开发,自动配置和生产级特性
当身体不适却不知该挂哪个科室时,智能导诊系统应运而生。患者只需选择不适部位和症状,系统即可迅速推荐正确科室,避免排错队浪费时间。该系统基于SpringBoot、Redis、MyBatis Plus等技术架构,支持多渠道接入,具备自然语言理解和多输入方式,确保高效精准的导诊体验。无论是线上医疗平台还是大型医院,智能导诊系统均能有效优化就诊流程。
|
3月前
|
人工智能 自然语言处理 前端开发
基于ChatGPT开发人工智能服务平台
### 简介 ChatGPT 初期作为问答机器人,现已拓展出多种功能,如模拟面试及智能客服等。模拟面试功能涵盖个性化问题生成、实时反馈等;智能客服则提供全天候支持、多渠道服务等功能。借助人工智能技术,这些应用能显著提升面试准备效果及客户服务效率。 ### 智能平台的使用价值 通过自动化流程,帮助用户提升面试准备效果及提高客户服务效率。 ### 实现思路 1. **需求功能设计**:提问与接收回复。 2. **技术架构设计**:搭建整体框架。 3. **技术选型**:示例采用 `Flask + Template + HTML/CSS`。 4. **技术实现**:前端界面与后端服务实现。
|
4月前
|
人工智能 自然语言处理 算法
【人工智能】探索GPT-4o mini:解锁成本效益新纪元,赋能开发创新与效率
在人工智能领域的浩瀚星空中,OpenAI再次以其创新之光照亮了前行的道路,推出了备受瞩目的GPT-4o mini模型。这款被誉为“迄今为止最具成本效益的小模型”不仅继承了GPT系列强大的自然语言处理能力,更在成本控制上实现了重大突破,为开发者们开启了一扇通往高效与创新的大门。
74 1
|
5月前
|
人工智能 自然语言处理 搜索推荐
人工智能:赋能开发的革命性力量
在科技飞速发展的今天,人工智能(AI)正深刻影响软件开发。AI作为强大的助手,通过自动化需求分析、智能代码补全及测试等手段大幅提升开发效率。同时,AI助力软件创新,如个性化推荐系统改善用户体验,并通过数据分析辅助决策,降低项目风险。随着AI技术普及,掌握相关技能变得至关重要,推动开发者技能升级与人才培养。总之,AI正重塑软件开发,加速流程、激发创新,引领行业发展至新高度。
163 1
|
4月前
|
人工智能 网络协议 Java
23.12月中旬 上海寻序人工智能科技-上海嘉定-Java开发实习生-薪资150-230/d 面经
关于上海寻序人工智能科技有限公司Java开发实习生岗位的面试经验分享,涵盖了技术问题如对象存储MinIO、ArrayList扩容、Object类方法、hashCode和equals方法、处理哈希冲突、JVM垃圾回收器、GC算法、网络协议、邮件协议、HTTP请求方法、Linux和Docker命令、Dockerfile制作等。
|
5月前
|
机器学习/深度学习 人工智能 算法
探索操作系统的未来:量子计算与人工智能的融合
【7月更文挑战第17天】随着科技的飞速进步,传统操作系统正面临前所未有的挑战和机遇。本文将探讨操作系统在未来技术革命中的角色转变,特别是量子计算和人工智能如何推动操作系统设计的革新。文章将分析当前操作系统的限制,探讨量子计算对操作系统架构的影响,以及人工智能如何优化系统性能和用户体验。最后,我们将展望操作系统在融合这些新兴技术后的可能发展路径。
66 2
|
5月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI使用问题之部署时是否可以自定义资源的区域
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。