首页 > 其他分享 >一键开启 GPU 闲置模式,基于函数计算低成本部署Google Gemma 模型服务

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

时间:2024-03-12 13:57:16浏览次数:32  
标签:Google 函数 -- Gemma 实例 GPU 闲置

背景信息

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

数据来源:https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf

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

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

前提条件

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

GPU 闲置计费公测资格申请

Serverless GPU 闲置计费当前为邀测功能,如需体验,请提交公测申请联系我们
扫码提交申请

操作步骤

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

创建应用

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

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

  1. 编写 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
  1. 创建函数

    a. 进入函数计算控制台,新建 GPU 函数,选择第二部所推送的镜像
    image
    b. 在高级设置中启用 GPU,并选择 T4卡型,配置16GB 显存规格。完成创建
    image

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

    a. 进入函数弹性管理页 - 单击创建规则:版本选择 LATEST ,最小实例数选择1,并启用闲置模式,最后点击创建完成弹性规则配置
    image
    b. 页面跳转回弹性管理页面,等待容器实例成功启动后,可以看到当前预留实例数为1,且可以看到已开启闲置模式的字样,则表示 GPU 闲置预留实例已成功启动
    image

使用 LLM 应用

  1. 在函数配置 - 触发器页面找到函数的 endpoint 并进行测试
    image
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>
  1. 通过实例监控数据观察可见,在没有函数调用发生时,该实例的显存使用量会降至零。而当有新的函数调用请求到来时,函数计算平台会迅速恢复并分配所需的显存资源。从而帮助降本。
    image
    image
  2. 函数计算平台会在您调用结束后,自动将 GPU 实例置位闲置模式,无需您进行手动操作,并且会在下次调用到来之前,将该实例唤醒,置位活跃模式进行服务。

删除资源

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

  1. 返回函数计算控制台概览页面,在左侧导航栏,单击函数
  2. 单击目标函数右侧操作列的更多 - 删除,在弹出的删除应用对话框,勾选我已确定资源删除的风险,依旧要删除上面已选择的资源,然后单击删除函数。
    image

费用说明

套餐领取

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

资源消耗评估

函数计算资源配置如下:拥有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*秒
相关阅读

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

标签:Google,函数,--,Gemma,实例,GPU,闲置
From: https://www.cnblogs.com/Serverless/p/18068145

相关文章

  • 信息收集之GOOGLE搜索
    1.常用的google关键字site指定域名inurlURL中存在的关键字页面字intext网页中内容里面的关键敏感信息Filetype指定文件类型intitile网页标题中的关键字link返回你所有的指定域名连接info查找指定站点信息......
  • scalene python cpu&gpu 性能分析工具
    scalene使用一个pythoncpu&gpu性能分析工具,同时也支持内存的分析,同时还提供了基于ai的智能优化推荐包含的一些特性cli支持多种输出格式包含了一个web-gui基于ai的智能提示参考使用安装pipinstallscalene包含的cliusage:scalene......
  • Google multitask模型SNR
    背景MMoE模型从一定程度上解决了多个目标(任务)在训练过程中的相互耦合的问题,即使用门控概念(gatenetwork)降低了因为share-layer部分带来的“特征耦合”。但其实这是不够的,因为在每一个expert内部,与其他的expert不存在联系,这导致每个expert的表达能力不是“那么强”。因此google提......
  • 了解 NVIDIA 的数据中心 GPU 系列
    长话短说NVIDIA拥有数十个GPU,可以为不同大小的ML模型提供服务。但了解这些不同卡的性能和成本(更不用说保持名称正确)是一个挑战。每个GPU的名称是一个字母数字标识符,传达有关其架构和规格的信息。本指南可帮助您浏览NVIDIA数据中心GPU系列并将其映射到您的模型服务需......
  • google benchmark
    最小用例:https://github.com/google/benchmark?tab=readme-ov-file#usage排除干扰:https://github.com/google/benchmark/blob/main/docs/reducing_variance.md1.benmark编译为release版本:-DCMAKE_BUILD_TYPE=Release2.禁止cpu频率调节:sudocpupowerfrequency-set--governor......
  • 运行模型对比 gemma:7b, llama2, mistral, qwen:7b
     【gemma:2b】totalduration:1m5.2381509sloadduration:530.9µspromptevalduration:110.304mspromptevalrate:0.00tokens/sevalcount:604token(s)evalduration:1m5.126287sevalrate:9.27tokens/s 【gemma:7b】t......
  • 谷歌Gemma介绍、微调、量化和推理
    谷歌的最新的Gemma模型是第一个使用与Gemini模型相同的研究和技术构建的开源LLM。这个系列的模型目前有两种尺寸,2B和7B,并且提供了聊天的基本版和指令版。用一句话来总结Gemma就是:学习了Llama2和Mistral7B的优点,使用了更多的Token和单词进行了训练了一个更好的7B(8.5B)模型。所......
  • 远程GPU服务器环境配置
    miniconda环境在Linux系统中安装Miniconda通常涉及以下几个步骤:步骤1:下载Miniconda安装脚本可以从官方或者镜像站点下载Miniconda的Linux版本。这里提供一个通用的镜像站点下载命令,可以根据实际情况选择适合自己的Miniconda版本和架构:wgethttps://mirrors.tuna.tsinghua.edu......
  • 这3款免费最佳Google翻译替代品,完美解决谷歌翻译国内用不了的尴尬
    前段时间Google谷歌翻译停止了中国区服务,谷歌翻译退出中国已经成为历史事件,导致Chrome谷歌浏览器无法翻译网页,使得很多小伙伴办公和学习都遇到阻碍,目前搜索谷歌翻译的网址无法正常访问,甚至连谷歌翻译的手机APP也无法使用。谷歌在线翻译突然撤出中国,这猝不及防的操作瞬间让很......
  • 英伟达gpu查看显存剩余
    我使用tmux常常将一块屏幕的四分之一用于观察gpu利用率和显存剩余,但是如果我使用nvidia-smi就会显示不全,因为我有10块gpu。我想了想,直接使用nvidia-smi显示的信息很多是我不需要的,我只需要gpu-id号,显存剩余,显存总量,gpu利用率就这些,那么我们可以设置只显示这些:nvidia-smi--query......