开发 LLM 支持的应用程序:Azure 上的 Llama 2(5/n)

news2025/3/12 13:13:47

微软与 Meta 联手在 Azure 上提供 Meta 的开源大型语言模型 (LLM) Llama 2,打开了闸门!信不信由你,这是一件大事。

亚马逊的 AWS 于去年年底发布了 Amazon SageMaker Jumpstart,它与 Azure 类似,支持部署开源模型供公共和私人使用。我将在未来几周内撰写一篇关于使用 AWS 基础模型开发 LLM 驱动的应用程序的文章!

人们可以在 Azure 上部署 Llama 2 LLM,并将其安全地公开给全世界,以便用户或应用程序可以使用它。这为组织将 LLM 集成到软件应用程序中打开了大量的商业机会——从而创建“加速应用程序 (Xapp)”。

在本文中,我将详细介绍如何创建一个与 LLM(Llama 2 70 亿参数模型)模型集成的简单 Xapp。

什么是基础模型?

基础模型是一种大型语言模型 (LLM),它是在庞大的公开数据集上训练的。它们可以针对各种重点和特定的应用程序用例进行微调,从而有助于开发专门的应用程序。我们可以利用它们的智能来完成各种任务,例如内容创意、总结、问答等等。我们甚至可以对它们进行微调以与我们的自定义数据集集成。OpenAI 的 GPT-4、Google 的 BERT 和 Meta 的 Llama 2 都属于这一类基础模型。

Meta 在 Llama 2 框架下发布了一组开源模型:Llama 2(70 亿)、Llama 2(130 亿)和 Llama 2(700 亿)参数。由于这些模型是开源的,因此它们可以用于商业用途,这为重新发明和创新软件应用程序打开了大门。LLM 时代之前的应用程序可能必须使用代码规则或基本的机器学习模型来推断智能(如果有的话)。

开发人员可以利用 Llama 2 的预训练和微调模型来加速开发功能更强大、更智能的应用程序。

合理的架构

我探索得越多,就越能发现许多围绕开发和部署 LLM 集成软件应用程序的合理架构。虽然我无法在此详细介绍这些架构,但我可以将它们完整地呈现出来:

嵌入式法学硕士服务

此设置促进了本地运行的 LLM 服务(作为正常应用程序部署的一部分部署的微服务)。部署中的其他微服务应用程序使用适当的输入(提示)调用 llm-servcie 并从 LLM 获取结果(完成)。LLM 预计将使用其预先训练的知识 - 这意味着其上下文不需要额外的增强数据。

如图所示,LLM 将根据其预训练回答:

LLM 被部署并嵌入到基础架构中,可能是微服务,将端点暴露给其他微服务。如果来自组织不同部门的另一个应用程序希望使用此设置,它们必须遵循相同的模式。

这种架构的潜在成本是模型的本地部署——基础设施成本、请求/响应时间、可扩展性和高可用性、模型完成的可靠性等等。

如果应用程序不是任务关键型的或者对延迟和 LLM 模型幻觉具有容忍度,那么也许这可能是架构。

精心策划的法学硕士服务

LLM 部署到云(例如 Azure),并有望通过预定义的 RESTful 端点公开模型。我们在此不运行嵌入式 LLM 服务,而是创建一个 llm-service 集群,其中包含在容器编排器(例如 Kubernetes)上运行的多个 pod。

 

 

组织中的任何应用程序都可以获取 llm-service 公开的合同并将其与其应用程序集成。

llm-service 仍然没有提供特定的数据集,但如果需要的话,没有理由不能为其提供私有数据集。

 

云托管法学硕士服务

与其创建一个庞大的 AKS 集群来部署我们的 llm 服务,云提供商为我们提供这种功能不是更好吗?我们可以选择一个模型,并要求云提供商简单地将其部署在他们预先构建的集群中。这样,我们可以减轻在我们自己的集群中保护、管理和维护模型服务的问题。

 

Azure 和 AWS 等云提供商通过其 ML 工作区提供的基础模型可以通过 RESTful 端点部署和公开。任何具有适当安全密钥的应用程序都可以调用基于云的 llm-service 端点以集成到其软件应用程序管道中。

其优势在于成本效益和快速上市。与在云端运行相比,在本地设置中基于 GPU 的机器上运行可能并不具有成本效益。

我设法使用了 AWS Sage Maker JumpStart(等待他们授予我访问 Jumpstart 的权限以部署 Llama 2 模型)和 Azure 的基础语言模型。

让我向你展示如何部署一个 Llama 2(70 亿)聊天模型供公众使用。

 

Azure 上的 Llama 2 服务

如果您还没有这样做,请前往 Azure 门户并创建一个机器学习工作区(在搜索栏中搜索机器学习)。

 

按照以下步骤为我们创建 ML 空间。工作区将作为此创建过程的一部分创建。

如果您需要详细参考该步骤,这里有详细的文档。

一旦创建了工作区,您需要打开 Studio - 当您位于 ML 工作区的概览页面时,将显示类似以下的消息。

启动工作室后,第一步是访问模型目录。模型目录是机器学习领域的新成员,包含所有可用的基础模型 - 从 openAI 到 Llama 到 Anthropic 到 Falcon。请记住,模型目录处于“预览”模式 - 因此可以在正式发布之前修改和/或删除功能。

单击“介绍 Llama 2”按钮下的查看模型,可以找到 Azure 目前支持的所有 Llama 2 模型:

 

                                                        包含 Llama 2 型号的模型目录 

正如您在图片中看到的,所有三种类型的模型(7b,13b 和 70b)都受支持——文本生成以及聊天类型。

选择要部署的模型 — 就我而言,我选择了 Llama-2–7b-chat 模型。下一步是将此模型部署到基于 GPU 的增强型虚拟机。

我们会询问我们是想要实时端点还是基于批处理的端点。因为我们想要一个基于聊天的应用程序 — 我选择了实时端点。批处理端点用于使用 LLM 执行批量操作,例如查看大量图像、数据集等。

Azure 具有内置机制来提供安全可靠的端点 - 禁止 LLM 提供与自残、性、暴力和仇恨相关类别的答案 - 我强烈建议您在将其部署用于公共用途时部署此受保护的端点。

该模型将与其他资源一起部署在虚拟机上 — 通常是启用 GPU 的机器。我选择了默认的“Standard_NC12s_v3”,它有 12 个虚拟核心、224GB RAM 和 2 个 GPU(一台相当强大的机器)。

这个虚拟机的成本高达每小时 6 美元(对于现货实例而言)——所以每天 150 美元——接近每月 5000 美元。事实上,我让我的虚拟机在 LLM 端点上运行了一整夜,这就是我产生的成本 :)

 

                                         (不)预期的账单会在夜间运行 Llama 2 :)

 

无论如何,回到我们的部署,继续在所选虚拟机上部署 LLM。提供端点名称和其他详细信息。提交部署后,需要几分钟(我认为在我的情况下需要超过 15 分钟)才能成功部署并准备好端点。

在使用带 GPU 的虚拟机时,使用非美国区域虚拟机似乎有一些限制。我无法在伦敦地区部署虚拟机,因此不得不压缩我的工作区,并选择 us-east-2 区域,从头开始一切。

一旦端点准备就绪,您就可以开始了!您可以转到 ML Studio 页面的侧边栏,检查“端点”部分是否可用。例如,我的端点已成功部署,我可以在“端点”部分中检查:

                                                        Llama 服务的端点和 Swagger URI 

请注意,只能使用 API 密钥访问该端点 - 密钥可在端点的“使用”部分下获得: 

                                         用于访问我们的 Llama 2 服务端点的 API 密钥

您可以使用主键或辅助键来调用端点。我们将了解如何使用 Postman 以及 Python 程序来使用它。

LLM 为您服务

您已经部署了 LLM(Llama-2–7b 模型)并为您服务!

让我们使用 Postman 来测试一下,因为端点肯定是公共的。我创建了一个 POST 请求并粘贴了我的端点:

                         Postman 测试调用我们在 Azure 2 上部署的 Llama 2 服务

我们需要以 JSON 格式提供请求正文——正如您所见,我已请求 LLM 为我提供有关 DOGE 币的问题的答案。

您需要通过“授权”选项卡提供 API 密钥 - 确保您使用“Bearer”令牌方法并粘贴身份验证密钥部分中的一个密钥。

 所有艰苦的工作都已完成——最后一步是调用端点并等待结果!

                                                                        收到LLM的回复 

耶!我们成功从本地邮递员调用了部署在 Azure 上的 LLM。

通过程序调用端点也可以完成相同的操作 — — 正如 Python 客户端在此处显示的那样:

 

server_url = "https://llama2.eastus2.inference.ml.azure.com/score" 

# 初始化 OpenAI API 密钥
api_key = "vCWWzxvpxRUFGtGmS0U0xxxx" 

# 向用户提问并获取答案的函数
def  ask_user (): 
    headers = { 'Content-Type' : 'application/json' , 'Authorization' : ( 'Bearer ' + api_key), 'azureml-model-deployment' : 'llama-2-7b-chat-12' } 

    if  user_question: 
        # 调用 Flask API 端点以获取答案
        response = request.post( 
            server_url, 
            user_question, 
            headers=headers 
        ) 
                    
        answer = response.json() 
        st.write(answer)

如您所见,我们正在直接从 Python 代码调用端点!

本文就到此为止。在下一篇文章中,我们将介绍 AWS 的 SageMaker JumpStart,并针对专业和自定义用例微调这些基础模型

包起来

基础模型是云提供商为我们提供的预先训练的模型——我们的工作是将它们部署到云环境并获取一个端点,以便可以从我们的应用程序中调用它。

在我们自己的基础设施上部署它们可能会有点复杂和密集——我们需要保护、管理和维护它们,这会变得有点麻烦。

幸运的是,Azure 和 AWS 等云提供商创建了一种机制,可以将 LLM 部署和使用为 PaaS(和 IaaS)服务。我们当然可以利用它们提供的平台支持。

参考:https://mkonda007.medium.com/developing-llm-powered-applications-llama-2-on-azure-5-n-1bd71672fe4c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2056626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常见而不容忽视,电器中微型紧固件的四大影响

技术和创新催生了数以百万计的电器,它们已成为每个家庭和人类日常使用的一部分。从微波炉和冰箱到笔记本电脑和智能手机,这些部件的技术影响正在迅速增长,成为现代生活的一部分。 在许多人的不经意间,这些功能强大的发明为我们许多…

[Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全

互斥量 mutex • 大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间 内,这种情况,变量归属单个线程,其他线程无法获得这种变量。 • 但有时候,很多变量都需要在线程间共享,这…

代码随想录算法训练营第二十一天(二叉树 八)

今天是二叉树复习最后一天! 力扣题部分: 669. 修剪二叉搜索树 题目链接:. - 力扣(LeetCode) 题面: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low…

使用 Dify 和 AI 大模型理解视频内容:Qwen 2 VL 72B

接下来的几篇相关的文章,聊聊使用 Dify 和 AI 大模型理解视频内容。 本篇作为第一篇内容,以昨天出圈的“黑神话悟空制作人采访视频”为例,先来聊聊经常被国外厂商拿来对比的国产模型:千问系列,以及它的内测版。 写在…

Linux非VP扩容方案

Linux系统非VP扩容方案 描述:现有虚拟机磁盘1TB 容量不够,需要扩容。 采用:https://bbs.sangfor.com.cn/forum.php?modviewthread&tid110403 扩容失败。原因是没有VP 和LV 解决方案: 1,查看分区 cat /proc/p…

鸿蒙内核源码分析(中断概念篇) | 海公公的日常工作

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多,比如中断控制器,中断源,中断向量,中断共享,中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.本篇的主角是海公公,用…

全国计算机二级C语言笔试试题及答案

一、选择题(每小题2分,共70分)   下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。   (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 …

day06-SpringBootWeb请求响应

前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们的…

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…

Bonree ONE 3.0:全域可观测 运维新境界

2024年8月16日,备受瞩目的Bonree ONE 3.0产品发布会上海站在上海中心大厦隆重举行。此次发布会以”Take IT Easy“——全域可观测,运维新境界为主题,博睿数据正式发布了一体化智能可观测平台Bonree ONE 3.0版本。Bonree ONE 3.0凭借领先的全域…

超声波清洗机哪个品牌好用?值得入手的超声波清洗机品牌推荐

许多人初次使用超声波清洗机的场景,往往发生在眼镜店内。它能灵巧穿梭于眼镜鼻托等细微缝隙间,实现彻底清洁,成效显著。这不仅限于眼镜,各式小件物品同样能享受到这份深度洁净的待遇。尽管超声波清洗机或许并非日常生活中的绝对必…

LeetCode.80.删除有序数组中的重复项II

题目描述: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间…

【MySQL-23】万字总结<InnoDB引擎>——【逻辑存储结果&架构(内存结构,磁盘结构,后台线程)&事务原理&MVCC】

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

【nginx】详细详细超详细,包括编译安装nginx+升级+回滚+核心配置+高级配置+反向代理+Nginx Rewrite相关功能等等

理论部分: 企业高性能Web服务器Nginx是一个开源的、高性能的HTTP和反向代理服务器,同时也支持IMAP/POP3/SMTP协议。它由俄罗斯人Igor Sysoev开发,并在2004年以BSD-like协议发布。Nginx因其卓越的性能、稳定性、丰富的功能集以及简单的配置而…

连锁美业门店收银系统怎么选?什么样的美业系统好用?美业管理系统源码分享

通过“PCiPAD手机APP微信小程序”的便捷功能操作, 提升预约服务、 会员管理、 收银管理、 库存管理、 客勤维护、员工管理、 排班管理等流程效率, 让门店员工的工作重心回归到服务质量上。 ▲ 小程序 ▲ 手机APP ▲ PC管理后台

Aseembly(九)-[BX] Loop

正如本篇文章的标题所示:本篇文章主要是进行 [BX] 和loop的讲解 上篇文章我们讲述了 关于 自己去dosbox里面编写汇编程序并且一步一步的编译(masm) 链接(link) 然后进行debug的过程 ,也进行了一个关于栈的实验: 详情请见我的上一篇文章 Aseembly(八)-汇编语言编写程序 让我们…

JavaScript class和正则

正则表达式练习 出生日期 年 月 日 ()表示一个整体 console.log(1909.match(^19\\d{2}$)); console.log(2024.match(^20(([01][0-9])|(2[0-4]))$)); //年 console.log(1909.match(^(19\\d{2})|(20(([01][0-9])|(2[0-4])))$)); // 月 console.log(12.match(^(0[1-9])|(1[0-2])…

minio版本升级与数据迁移操作记录

系列文章目录 minio单节点与集群安装 文章目录 系列文章目录前言一、问题引出二、升级与数据迁移步骤0.资源清单1.部署及启动新minio单实例2.设置新旧实例的别名3.检查旧实例bucket及存储的文件4.通过mc客户端命令进行数据迁移5.迁移结果验证 三、新旧实例minio数据对比 前言 …

利用Geohash算法,快速检索周边兴趣点

文章目录 一、前言二、基本原理三、Geohash算法四、算法存在的问题五、代码实现六、问题解决处理 一、前言 需要一个需求,查找某小区附近的超市,如果该小区和超市距离在500米以内,则查找成功。 实现该功能按照传统方式,需要获取小…

【秒杀系统架构图】

文章目录 高并发防止超卖和恶意请求定时同步商品用户秒杀的流程秒杀服务的关注点: 秒杀系统一般出现正在电商平台中,秒杀系统需要支持高并发,保持一致性和高可用的特点: 高性能。 秒杀涉及大量的并发读和并发写,因此支…