当前位置: 首页 > news >正文

Hugging Face LLM部署大语言模型到亚马逊云科技Amazon SageMaker推理示例

 本篇文章主要介绍如何使用新的Hugging Face LLM推理容器将开源LLMs,比如BLOOM大型语言模型部署到亚马逊云科技Amazon SageMaker进行推理的示例。我们将部署12B Open Assistant Model,这是一款由开放助手计划训练的开源Chat LLM。

 这个示例包括:

  • 设置开发环境

  • 获取全新Hugging Face LLM DLC

  • 将开放助手12B部署到亚马逊云科技Amazon SageMaker

  • 进行推理并与我们的模型聊天

  • 清理环境

 什么是Hugging Face LLM Inference DLC?

 Hugging Face LLM DLC是一款全新的专用推理容器,可在安全的托管环境中轻松部署LLM。DLC由文本生成推理(TGI)提供支持,这是一种用于部署和服务大型语言模型(LLM)的开源、专门构建的解决方案。TGI使用张量并行和动态批处理为最受欢迎的开源LLM(包括StarCoder、BLOOM、GPT-Neox、Llama和T5)实现高性能文本生成。文本生成推理已被IBM、Grammarly等客户使用,Open-Assistant计划对所有支持的模型架构进行了优化,包括:

  • 张量并行性和自定义cuda内核

  • 在最受欢迎的架构上使用flash-attention优化了用于推理的变形器代码

  • 使用bitsandbytes进行量化

  • 连续批处理传入的请求以增加总吞吐量

  • 使用safetensors加速重量加载(启动时间)

  • Logits扭曲器(温度缩放、topk、重复惩罚…)

  • 用大型语言模型的水印添加水印

  • 停止序列,记录概率

  • 使用服务器发送事件(SSE)进行Token流式传输

 官方支持的模型架构目前为:

  • BLOOM/BLOOMZ

  • MT0-XXL

  • Galactica

  • SantaCoder

  • gpt-Neox 20B(joi、pythia、lotus、rosey、chip、redPajama、open Assistant)

  • FLAN-T5-XXL(T5-11B)

  • Llama(vicuna、alpaca、koala)

  • Starcoder/santaCoder

  • Falcon 7B/Falcon 40B

 借助亚马逊云科技Amazon SageMaker上推出的全新Hugging Face LLM Inference DLC,亚马逊云科技客户可以从支持高度并发、低延迟LLM体验的相同技术中受益,例如HuggingChat、OpenAssistant和Hugging Face Hub上的LLM模型推理API。

 1.设置开发环境

 使用SageMaker python SDK将OpenAssistant/pythia-12b-sft-v8-7k-steps部署到亚马逊云科技Amazon SageMaker。需要确保配置一个亚马逊云科技账户并安装SageMaker python SDK。

 如果打算在本地环境中使用SageMaker。需要访问具有亚马逊云科技Amazon SageMaker所需权限的IAM角色。可以在这里找到更多关于它的信息。

 2.获取全新Hugging Face LLM DLC

 与部署常规的HuggingFace模型相比,首先需要检索容器URI并将其提供给HuggingFaceModel模型类,并使用image_uri指向该镜像。要在亚马逊云科技Amazon SageMaker中检索新的HuggingFace LLM DLC,可以使用SageMaker SDK 提供的get_huggingface_llm_image_uri方法。此方法允许根据指定的 “后端”、“会话”、“区域” 和 “版本”检索所需的Hugging Face LLM DLC 的 URI。

 要将[Open Assistant Model](openAssistant/Pythia-12b-sft-v8-7K-steps)部署到亚马逊云科技Amazon SageMaker,创建一个HuggingFaceModel模型类并定义终端节点配置,包括hf_model_id、instance_type等。使用g5.4xlarge实例类型,它有1个NVIDIA A10G GPU和64GB的GPU内存。

 亚马逊云科技Amazon SageMaker现在创建端点并将模型部署到该端点。这可能需要10-15分钟。

 4.进行推理并与模型聊天

 部署终端节点后,可以对其进行推理。使用predictor中的predict方法在端点上进行推理。可以用不同的参数进行推断来影响生成。参数可以设置在parameter中设置。

  • 温度:控制模型中的随机性。较低的值将使模型更具确定性,而较高的值将使模型更随机。默认值为0。

  • max_new_tokens:要生成的最大token数量。默认值为20,最大值为512。

  • repeption_penalty:控制重复的可能性,默认为null。

  • seed:用于随机生成的种子,默认为null。

  • stop:用于停止生成的代币列表。生成其中一个令牌后,生成将停止。

  • top_k:用于top-k筛选时保留的最高概率词汇标记的数量。默认值为null,它禁用top-k过滤。

  • top_p:用于核采样时保留的参数最高概率词汇标记的累积概率,默认为null。

  • do_sample:是否使用采样;否则使用贪婪的解码。默认值为false。

  • best_of:生成best_of序列如果是最高标记logpros则返回序列,默认为null。

  • details:是否返回有关世代的详细信息。默认值为false。

  • return_full_text:是返回全文还是只返回生成的部分。默认值为false。

  • truncate:是否将输入截断到模型的最大长度。默认值为true。

  • typical_p:代币的典型概率。默认值null。

  • 水印:生成时使用的水印。默认值为false。

 可以在swagger文档中找到TGI的开放api规范。

 openAssistant/Pythia-12b-sft-v8-7K-steps是一种对话式聊天模型,这意味着我们可以使用以下提示与它聊天:

 先试一试,问一下夏天可以做的一些很酷的想法:

 现在,使用不同的参数进行推理,以影响生成。参数可以通过输入的parameters属性定义。这可以用来让模型在“机器人”回合后停止生成。

 现在构建一个快速gradio应用程序来和它聊天。

 程序运行成功后,显示如下聊天窗口:

 现在已经成功地将Open Assistant模型部署到亚马逊云科技Amazon SageMaker并对其进行了推理。此外,还构建了一个快速的gradio应用程序,可以与模型聊天。

 现在,可以使用亚马逊云科技Amazon SageMaker上全新Hugging Face LLM DLC构建世代人工智能应用程序的时候了。

 5.清理环境

 删除模型和端点。

 

 6.总结

 从上面的部署过程,可以看到整个部署大语言模型的过程非常简单,这个主要得益于SageMaker Hugging Face LLM DLC的支持,还可以通过将Amazon SageMaker部署的端点与应用集成,满足实际的业务需求。

相关文章:

Hugging Face LLM部署大语言模型到亚马逊云科技Amazon SageMaker推理示例

本篇文章主要介绍如何使用新的Hugging Face LLM推理容器将开源LLMs,比如BLOOM大型语言模型部署到亚马逊云科技Amazon SageMaker进行推理的示例。我们将部署12B Open Assistant Model,这是一款由开放助手计划训练的开源Chat LLM。 这个示例包括&#xff1…...

内向基环树

例题1 例题2...

k8s replicaSet,deployment 学习笔记

文章目录 replicaSet 和 deployment 两者的关系。创建滚动更新回滚 replicaSet 和 deployment 两者的关系。 在 Kubernetes 中,ReplicaSet 和 Deployment 都是用来确保某种 Pod 的副本数目。但是,ReplicaSet 和 Deployment 是有差别的,二者的…...

Zabbix监控原理 安装

一、监控介绍 1、监控目的 监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用 对系统不间断时实监控 实际上是对系统不间断的时实监控 实时反馈系统当前状态 我们监控某个硬件、或者系统,都是需要能时实看到当前系统的状态&#x…...

我和“云栖大会”的双向奔赴

目录 引言初次参加云栖大会云栖大会带来的技术风向标本届大会最强技术有哪些?云栖大会对我职业生涯的影响个人对未来云栖大会的期待和建议结语 引言 想必大家对“云栖大会”并不陌生,“云栖大会”作为国内最具规模和影响力的云计算盛会,每年…...

HarmonyOS UI 开发

引言 HarmonyOS 提供了强大的 UI 开发工具和组件,使开发者能够创建吸引人的用户界面。本章将详细介绍在 HarmonyOS 中应用 JS、CSS、HTML,HarmonyOS 的 UI 组件以及如何自定义 UI 组件。 目录 JS、CSS、HTML 在 HarmonyOS 中的应用HarmonyOS 的 UI 组…...

中国移动发布《新型智慧城市白皮书》(2023版)

加gzh“大数据食铁兽”,回“20231101”,获取材料完整版 导读 通过本系列白皮书,我们系统的阐述了中国移动对中国智慧城市发展趋势,并对中国移动服务智慧城市建设六大核心能力进行了介绍,详细说明了中国移动智慧城市…...

windows和docker环境下springboot整合gdal3.x

链接: gdal官网地址 gdal gdal的一个用c语言编写的库,用于处理地理信息相关的数据包括转换,识别数据,格式化数据以及解析 同时提供第三方语言的SDK包括python,java上述需要编译后使用 java是需要使用jni接口调用实现方法在wind…...

大数据与健康:技术助力医疗卫生事业腾飞

大数据与健康:技术助力医疗卫生事业腾飞 随着科技的飞速发展,大数据技术已经渗透到我们生活的方方面面,包括医疗卫生领域。本文将对大数据在健康医疗领域的应用进行分析,并通过数据图表展示其发展趋势和前景。 一、背景介绍 近…...

《巴渝小将》少儿电视综艺走进江小白金色黄庄拍摄圆满成功!

巴渝小将,乘风破浪! 张扬巴渝魅力,展示少年风采,本期拍摄我们来到了位于江津的江小白金色黄庄。 江小白金色黄庄位于永兴镇黄庄村,是一座充满诗意又不乏童趣的农文旅综合体,基于当地良好的酿酒高粱产业基础…...

【uniapp】顶部和底部导航栏无法正常显示

关于顶部导航栏不显示的问题: 顶部导航栏在配置了 navigationBarTitleText 还是无法显示,如果是使用他人的项目结构,需要检查是否已经被配置了自定义导航栏: "navigationStyle": "custom" "globalStyle&…...

【ArcGIS模型构建器】06:ArcGIS中DOM批量分幅教程

ArcGIS中利用模型构建器实现DOM批量分幅裁剪。 文章目录 1. 加载数据2. 批量分幅1. 加载数据 批量分幅通常是基于数字正射影像来实现。 数字正射影像(DOM.tif)CASS标准图幅(shp) 2. 批量分幅 单个图幅可以通过裁剪或者按掩膜提取工具来进行,批量分幅采用模型构建器进行。…...

uniapp 设置 editor 默认值

dom 元素长这样 <editor id"editor" value12323 class"ql-container container" placeholder"开始输入..." ready"onEditorReady" blur"submit"></editor> 注意赋值必须要用 data 里面变量数据 不要let 定义…...

动态规划:计数类DP

整数划分&#xff1a; 二维做法&#xff1a; #include <iostream>using namespace std;const int N 1e3 7, mod 1e9 7;int f[N][N];int main() {int n;scanf("%d",&n);//总数为0时&#xff0c;前i个数字全不选也是一种方案&#xff0c;但某个数字不…...

Arcmap制图绘制显著性区域

类似于下图这种&#xff0c;为分析结果添加显著性区域&#xff0c;该如何实现呢&#xff1f; 实现方式多种多样&#xff0c;比如&#xff1a; 1、代码。Python、R、Matlab都有实现方式&#xff0c;但是绘制一幅优美的地图&#xff0c;用代码绘制&#xff0c;需要添加很多控制语…...

你一般会什么时候使用CHATGPT?

在当今数字时代&#xff0c;人们对于人工智能&#xff08;AI&#xff09;的依赖程度日益增加&#xff0c;而ChatGPT作为一种强大的自然语言处理工具&#xff0c;吸引了人们的广泛关注和应用。那么&#xff0c;人一般在什么时候会想要使用ChatGPT呢&#xff1f;这个问题涵盖了多…...

单例模式下双重校验锁 DCL 的灵魂三问

文章目录 前言如何实现一个双重校验锁 DCL定义一个单例变量定义一个获取单例的方法性能优化性能优化带来的一点点问题什么是指令重排&#xff1f; 总结如何理解文章开篇理解的三个问题1、为什么需要使用两个 if 语句&#xff1f;2、为什么使用了 synchronized 关键字还需要使用…...

oracle中关于connect by的语法及实现(前序遍历树)

语法 connect by是是结构化查询中用到的&#xff0c;其基本语法是&#xff1a; 1 select … from tablename 2 start with 条件1 3 connect by 条件2 4 where 条件3; 使用示例 例&#xff1a; create table tree(id int,parentid int); insert into tree values(120,184); …...

学习笔记二十七:K8S控制器Statefulset入门到企业实战应用

这里写目录标题 Statefulset控制器&#xff1a;概念、原理解读Statefulset资源清单文件编写技巧查看定义Statefulset资源需要的字段查看statefulset.spec字段如何定义&#xff1f;查看statefulset的spec.template字段如何定义 Statefulset使用案例&#xff1a;部署web站点State…...

JavaScript 的 闭包

在 JavaScript 中&#xff0c;闭包是一种强大的特性&#xff0c;它允许函数在结束执行后&#xff0c;仍能访问并控制其外部的局部变量。这种特性在许多高级 JavaScript 编程场景中都发挥着关键作用&#xff0c;如创建函数工厂、实现数据隐藏和封装等。 1、闭包的原理 JavaScri…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...