一键开启 GPU 闲置模式,基于函数计算低成本部署 Google Gemma 模型服务

本文涉及的产品
简介: 本文介绍如何使用函数计算 GPU 实例闲置模式低成本、快速的部署 Google Gemma 模型服务。

1. 背景信息

Google 在 2024 年 02 月 21 日正式推出了自家的首个开源模型族 Gemma ,并同时上架了四个大型语言模型,提供了 2B 和 7B 两种参数规模的版本,每种都包含了预训练版本(base 模型)和指令微调版本(chat 模型)[1]。根据 Google 的技术报告,本次开源的 Gemma 在问题回答、合理性、数学、代码等方面的性能均超越同参数量级的其他开源模型。

数据来源

函数计算作为阿里云上的 Serverless 计算服务,持续在 Serverless GPU 方面投入研发,为用户提供性价比极高的 GPU 实例。通过采用 Serverless GPU 的闲置计费模式(目前正处于公测阶段),用户得以迅速部署并上线自己的大型语言模型( LLM )服务。为了进一步提升用户体验,阿里云函数计算 GPU 平台摒弃了传统的运维需求,提供了多项用户友好的特性,包括但不限于实例冻结、自定义域名等,这些特性极大地简化了使用流程。它们使得用户部署的模型服务可以迅速进入就绪状态,避免了长时间的冷启动过程,确保了快速响应。这些优势有效地解决了 LLM 部署难、弹性差、资源浪费的痛点问题。

本文将介绍如何使用函数计算 GPU 实例和函数计算 GPU 首创的闲置模式低成本并快速部署 Gemma 模型服务。

2. 前提条件

已开通函数计算服务,详情请参见开通函数计算服务[2]


GPU 闲置计费公测资格申请:

【公测 - 申请使用[5]】Serverless GPU 闲置计费当前为邀测功能,如需体验,请提交公测申请或联系客户经理申请。

3. 操作步骤

使用函数计算部署 LLM 应用过程将产生部分费用,包括 GPU 资源使用、vCPU 资源使用、内存资源使用、磁盘资源使用以及函数调用的费用。具体信息,请参见费用说明[3]

3.1 创建应用

1. 下载模型权重,您可以选择从 huggingface 或者 modelscope 中进行下载,本文选择 Gemma-2b-it 作为示例进行部署。

Gemma 模型系列现已在 ModelScope 社区开源,包括:

2. 编写 Dockerfile 和模型服务代码,并推送镜像。

FROM registry.cn-shanghai.aliyuncs.com/modelscope-repo/modelscope:fc-deploy-common-v17

WORKDIR /usr/src/app

COPY . .

RUN pip install -U transformers

CMD [ "python3", "-u", "/usr/src/app/app.py" ]

EXPOSE 9000

模型服务代码:

from flask import Flask, request
from transformers import AutoTokenizer, AutoModelForCausalLM

model_dir = '/usr/src/app/gemma-2b-it'

app = Flask(__name__)

tokenizer = AutoTokenizer.from_pretrained(model_dir)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto")

@app.route('/invoke', methods=['POST'])
def invoke():
    # See FC docs for all the HTTP headers: https://help.aliyun.com/document_detail/179368.html#section-fk2-z5x-am6
    request_id = request.headers.get("x-fc-request-id", "")
    print("FC Invoke Start RequestId: " + request_id)

    text = request.get_data().decode("utf-8")
    print(text)
    input_ids = tokenizer(text, return_tensors="pt").to("cuda")
    outputs = model.generate(**input_ids, max_new_tokens=1000)
    response = tokenizer.decode(outputs[0])
    print("FC Invoke End RequestId: " + request_id)
    return str(response) + "\n"

if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=9000)

目录结构如下所示:

.
|-- app.py
|-- Dockerfile
`-- gemma-2b-it
    |-- config.json
    |-- generation_config.json
    |-- model-00001-of-00002.safetensors
    |-- model-00002-of-00002.safetensors
    |-- model.safetensors.index.json
    |-- README.md
    |-- special_tokens_map.json
    |-- tokenizer_config.json
    |-- tokenizer.json
    `-- tokenizer.model

1 directory, 12 files

构建镜像并进行推送:

IMAGE_NAME=registry.cn-shanghai.aliyuncs.com/{NAMESPACE}/{REPO}:gemma-2b-it
docker build -f Dockerfile -t $IMAGE_NAME . && docker push $IMAGE_NAME

3. 创建函数。

a. 进入函数计算控制台,新建 GPU 函数,选择第二部所推送的镜像

b. 在高级设置中启用 GPU,并选择 T4 卡型,配置 16GB 显存规格,完成创建

4. 为函数开启闲置预留模式:等待应用部署完成后,进入配置 - 预留实例页面,为该函数打开闲置预留模式。

a. 进入函数弹性管理页 - 单击创建规则:版本选择 LATEST ,最小实例数选择 1,并启用闲置模式,最后点击创建完成弹性规则配置

b. 页面跳转回弹性管理页面,等待容器实例成功启动后,可以看到当前预留实例数为 1,且可以看到已开启闲置模式的字样,则表示 GPU 闲置预留实例已成功启动

3.2 使用LLM应用

1. 在函数配置 - 触发器页面找到函数的 endpoint 并进行测试。

curl -X POST -d "who are you" https://gemma-service-xxx.cn-shanghai.fcapp.run/invoke
<bos>who are you?

I am a large language model, trained by Google. I am a conversational AI that can understand and generate human language, and I am able to communicate and provide information in a comprehensive and informative way.

What can I do for you today?<eos>

2. 通过实例监控数据观察可见,在没有函数调用发生时,该实例的显存使用量会降至零。而当有新的函数调用请求到来时,函数计算平台会迅速恢复并分配所需的显存资源,从而帮助降本。

3. 函数计算平台会在您调用结束后,自动将 GPU 实例置位闲置模式,无需您进行手动操作,并且会在下次调用到来之前,将该实例唤醒,置位活跃模式进行服务。

3.3 删除资源

如您暂时不需要使用此函数,请及时删除对应资源。如您需要长期使用此应用,请忽略此步骤。

1. 返回函数计算控制台[4]概览页面,在左侧导航栏,单击函数

2. 单击目标函数右侧操作列的更多 - 删除,在弹出的删除应用对话框,勾选我已确定资源删除的风险,依旧要删除上面已选择的资源然后单击删除函数

4. 费用说明

4.1 套餐领取

为了方便您体验本文提供的 LLM 应用场景,首次开通用户可以领取试用套餐并开通函数计算服务。该套餐不支持抵扣公网出流量和磁盘使用量的费用。如果您没有购买相关资源包,公网出流量和超出 512 MB 的磁盘使用量将按量付费。

4.2 资源消耗评估

函数计算资源配置如下:拥有 2 核 CPU、16GB 的内存、16GB 的显存,以及 512MB 的磁盘空间。若保有 1 个闲置预留实例并在该小时内与 Gemma 进行多轮对话,累计有效函数运行时间达到 20 分钟、函数闲置时间即为 40 分钟。相关资源使用的计费标准可参照下表所示。

计费项 活跃时间(20 分钟)计费 闲置时间(40 分钟)计费
CPU 资源 0.00009元/vCPU*秒 * (2核vCPU * 1200秒) = 0.216 元 0元
内存 0.000009元/GB*秒 * (16GB * 1200秒) = 0.1728 元 0.000009元/GB*秒 * (16GB * 2400秒) = 0.3456 元
GPU 资源 0.00011元/GB*秒 * (16GB * 1200秒) = 2.112 0.000009元/GB*秒1 * (16GB * 2400秒) = 0.3456 元

注 1:公测阶段闲置 GPU 单价为 0.000009元/GB* 秒

相关阅读:

ModelScope 一键部署模型:新手村实操 FAQ 篇-阿里云开发者社区

基于 ModelScope 模型库和 GPU 实例闲置计费功能低成本快速搭建 LLM 应用_函数计算(FC)-阿里云帮助中心


相关链接:

[1] 指令微调版本(chat 模型)

[2] 开通函数计算服务

[3] 费用说明

[4] 函数计算控制台

[5] 公测 - 申请使用


作者:王骜

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
1月前
|
监控 Serverless 对象存储
Serverless 应用引擎常见问题之用ECI部署Traefik时设置如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
237 2
|
1月前
|
人工智能 Serverless API
在函数计算上部署专属的Agent平台
Agent及Agent平台的相关概念和应用价值已经在《智能体(Agent)平台介绍》 文章进行了介绍,接下来我们要进行实际的操作,在阿里云函数计算上快速获取专属的Agent平台-AgentCraft
83212 7
在函数计算上部署专属的Agent平台
|
1月前
|
监控 Serverless Docker
函数计算常见问题之部署docker-compose
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
188 2
|
1月前
|
JSON 运维 JavaScript
函数计算常见问题之部署报错如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
337 2
|
2月前
|
存储 物联网 Serverless
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
本文主要将带大家通过使用阿里云产品函数计算 FC 和文件存储 NAS ,快速使用 Stable Diffusion 实现更高质量的图像生成,本方案内置模型库+常用插件+ControlNet ,用户可根据自己的需要更换需要的模型、Lora、增加插件。
48857 27
玩转 AI 绘图,基于函数计算部署 Stable Diffusion可自定义模型
|
3天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1
|
28天前
|
人工智能 监控 Serverless
如何基于ACK Serverless快速部署AI推理服务
通过上述步骤,可以在ACK Serverless上快速部署AI推理服务,实现高可用、弹性扩展的服务架构。
21 1
|
1月前
|
关系型数据库 Serverless 分布式数据库
Serverless 应用引擎常见问题之部署官方镜像如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
219 1
|
1月前
|
存储 运维 Serverless
我的Serverless实战-Serverless与传统模式的对比
我的Serverless实战-Serverless与传统模式的对比
|
2月前
|
存储 监控 Serverless
Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
【2月更文挑战第8天】Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
263 1

热门文章

最新文章

  • 1
    Serverless 应用引擎操作报错合集之在阿里函数计算中,函数执行超时,报错Function time out after如何解决
    7
  • 2
    Serverless 应用引擎操作报错合集之在阿里函数计算中,云函数怎么一直报错Function instance exited unexpectedly(code 1, message:operation not permitted) with start command 'php server.php '.如何解决
    6
  • 3
    Serverless 应用引擎操作报错合集之在Serverless 应用引擎中,FC3.0读取response body的时候出现错误提示"Caused by: java.io.IOException: closed"如何解决
    5
  • 4
    Serverless 应用引擎操作报错合集之在使用阿里云函数计算的过程中遇到“Browser closed unexpectedly”的错误如何解决
    8
  • 5
    Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
    6
  • 6
    Serverless 应用引擎操作报错合集之阿里函数计算中出现错误代码“CAFileNotFound”如何解决
    7
  • 7
    Serverless 应用引擎操作报错合集之阿里函数计算中调用zip-oss-fc函数返回时候出现错误代码如何解决
    6
  • 8
    Serverless 应用引擎操作报错合集之在阿里云函数计算中,遇到错误代码“Handled Error”如何解决
    7
  • 9
    Serverless 应用引擎操作报错合集之阿里函数计算中我打开sd时遇到错误,信息为"Function instance exited unexpectedly(code 1, message:operation not permitted) with start command ' '."如何解决
    10
  • 10
    Serverless 应用引擎操作报错合集之阿里函数计算中配置完fc,出现‘Function instance exited unexpectedly(code 1, message:operation not permitted) with start command 'npm run start '. 报错如何解决
    13
  • 相关产品

  • 函数计算