自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 OpenLLM 構(gòu)建和部署大模型應(yīng)用

人工智能
OpenLLM 是一個開源的大語言模型(LLM)開發(fā)框架。它支持多種開源的 LLM 模型,并且具有內(nèi)建的兩個關(guān)鍵的 LLM 優(yōu)化,能夠優(yōu)化內(nèi)存使用。此外,它與 LangChain 和 BentoML 都有很好的集成。

本次分享主題為:使用 OpenLLM 快速構(gòu)建和部署大語言模型的應(yīng)用。OpenLLM 是一個開源的大語言模型(LLM)開發(fā)框架。它支持多種開源的 LLM 模型,并且具有內(nèi)建的兩個關(guān)鍵的 LLM 優(yōu)化,能夠優(yōu)化內(nèi)存使用。此外,它與 LangChain 和 BentoML 都有很好的集成,可以快速地構(gòu)建和部署大語言模型的應(yīng)用。

一、BentoML 公司簡介

圖片

BentoML專注于提供機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施。核心產(chǎn)品是與公司同名的開源框架BentoML。公司總部位于舊金山灣區(qū),在國內(nèi)也有眾多遠(yuǎn)程工作的同事。通過不斷努力,公司獲得了眾多客戶的認(rèn)可。

二、OpenLLM 產(chǎn)品背景

首先來分享一下我們開發(fā) OpenLLM 的背景。

1、LLM 爆發(fā)

圖片

相信即將過去的 2023 年對大家來說都是非常奇妙的一年。2022 年 11 月的時候 ChatGPT 剛剛發(fā)布,過了一年到現(xiàn)在,我們已經(jīng)見證了各種各樣的大語言模型橫空出世:有商用的大語言模型,比如 Claude 和 GPT;也有很多開源的小模型,其參數(shù)量可能從幾個 B 到幾百個 B 不等??梢哉f這是一個大語言模型繁榮發(fā)展的時代,新型語言模型的層出不窮。

BentoML 在與一些客戶互動時發(fā)現(xiàn),他們在開發(fā)過程中可能會利用 OpenAI 的能力進(jìn)行開發(fā),將數(shù)據(jù)輸入到 prompt 中,然后測試推理結(jié)果。在將模型部署到生產(chǎn)環(huán)境上線時,他們希望在自己的服務(wù)器或云服務(wù)器上進(jìn)行部署。

2、屬于自己的 LLM

圖片

大部分客戶有以下訴求:

  • 高可控性/靈活性:如果將所有數(shù)據(jù)作為一個 prompt 輸入到 OpenAI 的模型中進(jìn)行推理,這種方法可能并不太切實際。最終,他們期望能夠通過自行訓(xùn)練或微調(diào),利用多年來積累的用戶數(shù)據(jù)得到一個屬于自己的模型,實現(xiàn)更加靈活的推理需求。
  • 數(shù)據(jù)安全性:如果將自己的數(shù)據(jù)用于模型推理,就需要關(guān)注數(shù)據(jù)安全性的問題。因為如果使用的是公共網(wǎng)絡(luò)上的模型,就不可避免地需要將自己的私有數(shù)據(jù)輸入到這個公共網(wǎng)絡(luò)的模型中。這可能導(dǎo)致數(shù)據(jù)泄露的問題,在一些注重數(shù)據(jù)安全性的企業(yè)中,這是無法接受的。
  • 成本效益:正如之前提到的,如果使用通用模型并采用經(jīng)過優(yōu)化的 prompt,可能需要一個龐大的 prompt。舉例來說,如果要進(jìn)行文檔的推理,可能需要將整個文檔或一本書輸入到 prompt 中。目前大多數(shù)商業(yè)模型是按 Token 計費的,如果提示非常龐大,成本就會相應(yīng)增加。然而,如果你能夠擁有自己的大模型應(yīng)用,那么成本可能只涉及硬件費用。并且,其精確度可能更高,這意味著你可能只需使用更小的模型就能達(dá)到相同的推理準(zhǔn)確度,從而進(jìn)一步降低成本。

3、生產(chǎn)環(huán)境中部署 LLMs 的挑戰(zhàn)

圖片

如果我們自己去部署大語言模型,可能會遇到以下挑戰(zhàn):

  • 可操作性:主要涉及到硬件成本,即一個大型模型是否能夠有效地部署在特定硬件上。我們都知道,一些優(yōu)秀的顯卡可能不太容易獲取。舉例來說,一個擁有 13B 參數(shù)的模型,其參數(shù)總量可能需要 26GB,這就使得單卡 A10G 顯卡難以應(yīng)對。因此,可能需要考慮使用多卡或多機(jī)部署來解決硬件上的限制。
  • 可擴(kuò)展性:包含硬件可擴(kuò)展性和軟件可擴(kuò)展性兩個方面。首先是硬件的可擴(kuò)展性,指的是在請求量和并發(fā)數(shù)較低時,可以只需一顆顯卡或一臺機(jī)器來滿足需求,而在用戶量增大時,希望系統(tǒng)能夠自動啟用多顆顯卡或多臺機(jī)器進(jìn)行并發(fā)推理。第二方面是軟件的可擴(kuò)展性??紤]到現(xiàn)在有許多大型語言模型,你可能在開發(fā)或測試階段希望方便地在不同模型之間切換,以觀察它們的效果并進(jìn)行比較。這就需要軟件方面的可擴(kuò)展性。
  • 吞吐量:大型語言模型的應(yīng)用與傳統(tǒng)的機(jī)器學(xué)習(xí)應(yīng)用有一些區(qū)別。傳統(tǒng)的機(jī)器學(xué)習(xí)應(yīng)用,比如圖像分類任務(wù),通??梢赃M(jìn)行批處理,即一次性處理多個輸入,同時返回結(jié)果。但是大型語言模型在推理時,其輸入不是同時到達(dá),輸出也不是同時產(chǎn)生,這給吞吐量帶來了更大的挑戰(zhàn)。
  • 延遲:我們自然希望延遲越低越好,但在機(jī)器學(xué)習(xí)應(yīng)用中,延遲有時與吞吐量是一對相互制衡的指標(biāo)。換句話說,如果要達(dá)到較大的吞吐量,可能需要在一定程度上犧牲延遲。

三、OpenLLM 介紹、應(yīng)用舉例與使用優(yōu)勢

1、OpenLLM 介紹

圖片

下面介紹我們的開源產(chǎn)品 OpenLLM 是如何解決上述問題的。

OpenLLM 于 2023 年 6 月開源,是一個用于部署大語言模型的框架。目前,該項目在 GitHub 上已經(jīng)獲得了 6800 多個星標(biāo)。其最初的口號是通過一行代碼或相對輕松地在不同的大語言模型之間切換,為個人用戶提供方便。無論是想要嘗試不同模型的個人用戶,還是想要部署自己的 AI 應(yīng)用的用戶,OpenLLM 都可以提供便捷的解決方案。

圖片

OpenLLM 目前支持幾乎所有常用的開源大語言模型。對于每個模型,框架都提供了多個不同的參數(shù)量和不同部署模型 ID 可供選擇。目前包括 ChatGLM、百川、Dolly-V2 等模型。

2、OpenLLM 應(yīng)用舉例

圖片

接下來通過演示來介紹 OpenLLM 是如何加速大語言模型應(yīng)用的開發(fā)和部署的。

首先,啟動一個 LLM 服務(wù)。

圖片

啟動 LLM 服務(wù)非常簡單,只需在安裝 LLM 工具后運行以下命令:"start dolly-v2" 即可啟動應(yīng)用。如果你的計算機(jī)上之前未下載過該模型,它將自動幫你下載。這可能需要一些時間,應(yīng)用啟動后,可以通過命令行直接與該服務(wù)交互,提出一個問題,比如"地球的重量是多少"。我們使用的是 Dolly-V2 模型,它給出了一個回答。由于這個模型相對較弱,因此回答可能不太準(zhǔn)確。

圖片

我們嘗試使用另一個模型,LlaMA,來看看是否可以提升準(zhǔn)確度。在這里,我們選擇使用 LlaMA2 模型,但由于 LlaMA2 不是 LlaMA 的默認(rèn)模型,我們需要指定一下模型 ID。和之前一樣,使用方法完全相同,只是切換了模型。

因此,使用我們的框架,用戶可以輕松在不同的模型之間切換。盡管使用方法一樣,但不同模型的回答可能會有所不同。這次使用 LlaMA2 模型,可以看到給出的答案相對更準(zhǔn)確。

圖片

我們使用命令行與服務(wù)進(jìn)行交互,這在測試階段非常方便和實用。然而,在實際部署應(yīng)用時,我們可能希望應(yīng)用提供一個 HTTP 或 gRPC 接口,以便前端或外部系統(tǒng)能夠調(diào)用。

OpenLLM 框架支持內(nèi)置的開箱即用的 HTTP API。在服務(wù)的首頁,顯示一個 Swagger 頁面,列出了所有服務(wù)支持的 HTTP 端點。你甚至可以在這里直接與服務(wù)進(jìn)行交互和測試,輸入提示并獲取 JSON 格式的響應(yīng)體,就像我們之前在命令行中演示的一樣。

由于我們暴露了 HTTP 接口,因此無論使用 Python、Node 還是 Curl 等任何能夠訪問 HTTP 的客戶端,都可以調(diào)用這個接口。這為應(yīng)用的靈活性和可訪問性提供了更多的選擇。

圖片

我們還提供了一個 Python SDK,使用戶能夠在 Python 代碼中直接與服務(wù)進(jìn)行交互。只需導(dǎo)入 Client,指定服務(wù)的地址,就可以直接向服務(wù)提出問題,它將正確地給出答案。這樣就可以在 Python 環(huán)境中更加便捷地集成和使用 OpenLLM 的服務(wù)。

3、OpenLLM 使用優(yōu)勢

圖片

使用 OpenLLM 有以下優(yōu)勢:

  • 模型切換。用戶能夠方便地在不同的模型之間進(jìn)行切換。
  • 內(nèi)置多種優(yōu)化技術(shù)。首先是量化,通過減少參數(shù)精度來降低整體內(nèi)存使用,特別適用于大型語言模型。OpenLLM 支持幾乎所有模型的量化。其次是 Token Streaming 技術(shù),在典型的聊天機(jī)器人場景中表現(xiàn)出色,允許邊產(chǎn)生邊接收答案,詞匯逐個生成。還有 continuous batching(持續(xù)批跑)和 paged attention 等重要優(yōu)化。
  • 多卡支持。用戶可以指定多個 GPU,并根據(jù)需要選擇運行方式,甚至可以指定特定的GPU。
  • 模型表現(xiàn)監(jiān)測?;诠井a(chǎn)品 BentoML,支持 Metrics 測量和性能指標(biāo)監(jiān)控。
  • 支持模型微調(diào)推理。OpenLLM 支持 Fine-tune,同時也支持與 LoRA Layer 進(jìn)行合作的推理。
  • 與其他 AI 工具如 BentoML、LangChain 和 Hugging Face 集成良好,提供了更全面的功能和應(yīng)用場景。

圖片

下面重點討論一下 Continuous Batching(持續(xù)批跑),因為我們使用了 VLM 的后端,它為我們帶來了很好的優(yōu)化。

在大型語言模型的推理中,輸入的強(qiáng)度并不相同,有些輸入可能更快產(chǎn)生結(jié)果,而有些可能需要更長時間。如果不進(jìn)行優(yōu)化,當(dāng)其中一個輸入(比如 S2)先完成推理時,整個過程就會等待其他輸入完成才能進(jìn)入下一輪。這會導(dǎo)致 GPU 時間的浪費,因為有一段時間沒有推理任務(wù)在進(jìn)行。

Continuous Batching 的優(yōu)化可以在一個推理結(jié)束時立即引入下一個推理任務(wù)。以一個例子來說明,假設(shè) S3 先完成了推理,那么 S5 就會立即加入,接著 S1 完成了推理,S6 就會立即加入。這樣可以確保在每個時間片上都有一個模型推理任務(wù)在運行,從而最大程度地利用 GPU 資源。這是一個有效的優(yōu)化策略,減少了空閑時間,提高了整體推理效率。

圖片

介紹了時間優(yōu)化之后,再來看一下空間優(yōu)化,尤其是關(guān)于 KVcache 的優(yōu)化。首先簡要介紹一下大語言模型的工作原理。它基于 Transformer 框架,模型通過一系列輸入的 token,返回下一個 token 的最大概率。然而,由于輸入可能存在重復(fù)計算,例如在輸入"我是一只"后,模型返回"我是一只貓",在輸入"我是一只貓"時,又返回"我是一只貓,",這導(dǎo)致了 Transformer 框架中有許多重復(fù)的計算。為了解決這個問題,我們使用 KVcache 緩存計算結(jié)果。

KVcache 帶來了一個新問題,就是在計算機(jī)內(nèi)存分配時,無法準(zhǔn)確知道需要分配多少內(nèi)存。我們只能先估算一個大致的范圍。通過圖表演示可以看到,當(dāng)一個任務(wù)完成后,本來可以釋放的內(nèi)存卻可能由于下一個任務(wù)的加入而無法充分利用。這樣就會產(chǎn)生很多內(nèi)存碎片,影響內(nèi)存的使用效率。

為了優(yōu)化這個問題,引入了 Paged Attention。Paged Attention 的優(yōu)化思想是將所有內(nèi)存拆分成一個個 block,然后在內(nèi)存分配時按 block 分配。如果一個任務(wù)完成后,發(fā)現(xiàn)內(nèi)存不夠,需要再增加時,框架會在另一個地方(可能不是連續(xù)的地方)分配另一個 block。任務(wù)完成后,這個 block 可能會被釋放,供下一個任務(wù)使用。通過這種方式,可以有效減少內(nèi)存碎片。需要注意的是,內(nèi)存不是連續(xù)的,因此需要一個 block table 來存儲內(nèi)存的物理位置和實際序號的映射關(guān)系,使得在大模型中看起來是獲得了一個邏輯上連續(xù)的內(nèi)存。

四、BentoML 介紹與應(yīng)用舉例

1、BentoML 介紹

圖片

完成了以上優(yōu)化后,開始部署大語言模型。然而,大多數(shù) AI 應(yīng)用不僅僅是將一個模型部署上去,否則沒有哪個公司能夠與 OpenAI 競爭。因此,除了模型推理之外,我們的 AI 應(yīng)用還可能包含許多其他方面的工作。例如,需要考慮如何收集數(shù)據(jù)、驗證數(shù)據(jù)、配置部署指標(biāo)以及如何進(jìn)行模型推理,包括服務(wù)指標(biāo)的觀測。這些問題在研究階段,可能不需要考慮,但在部署和工程化之后,必須考慮這些雜項問題。

圖片

BentoML 與 OpenLLM 集成帶來了許多優(yōu)勢。BentoML 是一個專注于解決部署后事項的開源 AI 部署框架,具體如下:

  • 開源 AI 部署框架:BentoML 提供了一整套的開發(fā)、部署和打包解決方案。
  • 模型與代碼的版本控制:BentoML 引入了模型和版本的控制概念,使得模型可以像 GitHub 的提交一樣進(jìn)行版本控制。由此可以輕松追蹤和回退之前的指定版本,特別是在模型出錯時非常有用。
  • 通過 Metrics、Traces 和 Logs 提供開箱即用的可觀察性:BentoML 內(nèi)置了開箱即用的可觀測性功能,包括測量指標(biāo)、追蹤和日志功能,幫助用戶更好地監(jiān)測和理解模型的性能。
  • 容器化為標(biāo)準(zhǔn)的 OCI 鏡像:BentoML 支持將整個機(jī)器學(xué)習(xí)應(yīng)用打包為標(biāo)準(zhǔn)的容器鏡像。
  • 多種部署目標(biāo):可以將應(yīng)用輕松部署在各種云服務(wù)器上,例如 AWS。
  • 分布式部署與擴(kuò)容:BentoML 支持分布式的部署與擴(kuò)容,為處理高負(fù)載提供了便利。
  • Serverless BentoCloud:這是 BentoML 最新支持的功能之一,允許以 Serverless 方式的部署。這意味著應(yīng)用在沒有任何請求時不占用任何資源,只有在第一個請求到達(dá)時才進(jìn)行冷啟動。

圖片

BentoML 模型是對機(jī)器學(xué)習(xí)模型的一種抽象。在機(jī)器學(xué)習(xí)領(lǐng)域,有許多不同的框架,每個框架都有自己的模型概念。BentoML 允許將這些不同框架的模型導(dǎo)入為 BentoML 模型。這種抽象化的設(shè)計有幾個優(yōu)點:

  • 版本管理:BentoML 模型具有版本管理功能,這意味著可以輕松地追蹤、管理和回滾模型的不同版本。這對于模型的迭代和更新非常有用。
  • 團(tuán)隊協(xié)作:在開發(fā) AI 應(yīng)用時,通常會有研究團(tuán)隊負(fù)責(zé)訓(xùn)練模型。一旦模型被訓(xùn)練并保存為 BentoML 模型,就可以被推送到遠(yuǎn)程平臺,供工程團(tuán)隊下載和使用。這種分工和協(xié)作的方式使得團(tuán)隊可以更加高效地合作,研究和工程團(tuán)隊可以專注于各自的任務(wù)。通過這種方式,團(tuán)隊成員不需要擔(dān)心模型的具體來源,只需通過 BentoML 平臺下載并使用相應(yīng)的模型。這種團(tuán)隊協(xié)作的概念有助于提高整個開發(fā)過程的效率和協(xié)同工作的流暢性。

圖片

BentoML 的 Runner 具有以下特點:

  • Remote Worker:Runner 將模型封裝成一個遠(yuǎn)程對象,使其可以對外提供服務(wù)。這種分離的設(shè)計允許模型獨立于應(yīng)用部署,提高了系統(tǒng)的模塊化性和可維護(hù)性。
  • 獨立擴(kuò)容:由于 AI 應(yīng)用的模型部分通常需要大量 GPU 資源,而其他任務(wù)如 API 接口、數(shù)據(jù)預(yù)處理和 IO 操作等則可能只需要 CPU。通過獨立部署,它們可以相互獨立地擴(kuò)容。CPU 資源相對便宜,可以自由擴(kuò)展,而 GPU 資源可能有限,例如只有 2 到 3 個。這種方式可以確保將 GPU 資源專注于模型推理,而將 CPU 資源用于其他任務(wù),提高了整體的資源利用率。
  • 支持主流 ML 框架直接轉(zhuǎn)化為 Runner:BentoML 支持幾乎所有主流的機(jī)器學(xué)習(xí)框架,包括 PyTorch 和 TensorFlow。模型可以直接轉(zhuǎn)換為 Remote Runner,并在獨立的進(jìn)程中進(jìn)行部署。

圖片

上圖中展示了 BentoML API Server 的工作流程:應(yīng)用從外部接收 HTTP 請求,可能是通過 POST 方法發(fā)送的 JSON 數(shù)據(jù)。接收到的 HTTP 請求數(shù)據(jù)可能需要進(jìn)行預(yù)處理,以便轉(zhuǎn)換為模型能夠接受的格式。這個步驟通常涉及數(shù)據(jù)格式轉(zhuǎn)換、驗證等操作,確保輸入數(shù)據(jù)符合模型的要求。IO Descriptors 定義了輸入和輸出數(shù)據(jù)的結(jié)構(gòu)和類型,起到了數(shù)據(jù)格式轉(zhuǎn)換橋梁的作用。經(jīng)過 IO Descriptors 的轉(zhuǎn)換后,數(shù)據(jù)被傳遞給模型進(jìn)行推理。模型利用輸入數(shù)據(jù)生成相應(yīng)的預(yù)測或輸出。模型的輸出可能需要進(jìn)行一些后置處理,以便將其轉(zhuǎn)換為 HTTP 響應(yīng)的格式。這個步驟包括將 Tensor 或 Numpy 數(shù)組轉(zhuǎn)換為 JSON 格式等。處理完后的數(shù)據(jù)以 HTTP 響應(yīng)的形式返回給請求方,完成了整個推理過程。這是應(yīng)用與外部系統(tǒng)通信的出口。

圖片

BentoML 的請求處理流程經(jīng)過了負(fù)載均衡層、API 服務(wù)器和 Runner 的多個層次:

  • 負(fù)載均衡層:負(fù)載均衡層接收到所有的請求,并負(fù)責(zé)將它們分發(fā)給 API 服務(wù)器。這一層可以進(jìn)行請求的智能分發(fā),確保每個 API 服務(wù)器負(fù)載均衡。
  • API 服務(wù)器:API 服務(wù)器是 BentoML 應(yīng)用的入口,負(fù)責(zé)接收來自負(fù)載均衡層的請求。API 服務(wù)器可能會橫向擴(kuò)展,即創(chuàng)建多個實例以處理大量的并發(fā)請求。一旦 API 服務(wù)器接收到請求,它會進(jìn)行一些預(yù)處理,然后將請求轉(zhuǎn)發(fā)給 Runner。
  • Runner:Runner 是對模型的封裝,負(fù)責(zé)實際的模型推理。在這一層,模型推理支持批處理功能。當(dāng) Runner 接收到一個請求時,它會等待一段時間,看是否有其他請求到達(dá)。只有當(dāng)?shù)却龝r間達(dá)到最大值或者達(dá)到了規(guī)定的批處理容量時,Runner 才會一次性提交這批請求給模型進(jìn)行推理。這個過程對用戶是無感知的,而且可以提高推理的效率。

圖片

這里介紹一下 BentoML 中 Bento 的概念,Bento 是打包好的最小的部署的單元,包括機(jī)器學(xué)習(xí)的依賴、環(huán)境的 Dockerfile、源代碼、需要的模型等各種部署的配置。

2、BentoML 應(yīng)用舉例

圖片

接下來通過一個實例來演示如何使用 BentoML 開發(fā)和部署 AI 應(yīng)用。我們將創(chuàng)建一個應(yīng)用,利用 LangChain 和 OpenLLM 實現(xiàn)廣告詞的生成功能,并展示 LangChain 和 OpenLLM 的集成。然后,我們將使用 BentoML 啟動一個 HTTP 服務(wù),通過一行代碼切換 LLM 模型,并最終生成一個 Bento 包,以演示如何使用 BentoML 進(jìn)行后續(xù)部署。

圖片

在前面的代碼中,我們導(dǎo)入了一些 LangChain 的模塊。如果你對 LangChain 比較熟悉的話,應(yīng)該對這些模塊有所了解,這里不做詳細(xì)講解。接下來是 BentoML 的部分。BentoML 主要導(dǎo)入了一些 IO Descriptor,這些描述符用于說明輸入輸出的類型。在這里,我們導(dǎo)入了兩個類型,一個是 JSON,另一個是 Text?,F(xiàn)在我們將利用這些導(dǎo)入的模塊和描述符,因為我們的輸入應(yīng)該是 JSON 格式,而輸出則是一段文字。

圖片

接下來,我們將使用 pydantic 的 Model 定義一個結(jié)構(gòu)體,該結(jié)構(gòu)體用于驗證輸入的有效性。這個 Query 對象包含以下幾個參數(shù):industry 表示所在行業(yè),productName 表示產(chǎn)品名稱,keywords 表示需要的關(guān)鍵詞。這些參數(shù)是生成廣告詞所需的輸入。

圖片

第二部分是一個 helper 函數(shù),用于快速切換模型 ID。該函數(shù)返回一個 LangChain 對象。因此,我們首先使用 opt 模型,如果注釋掉上面的一行并使用下面一行,就可以直接切換到使用百川模型。

圖片

這是 Prompt 的生成部分,利用 LangChain 的功能,指定一個 Prompt 的模板,然后將剛才輸入的參數(shù)填充到這個模板中,生成一個完整的 Prompt。

圖片

接下來的步驟是定義要公開的接口。通過指定輸入和輸出的類型,將這個函數(shù)作為服務(wù)的一個接口。在第 48 行,將 LLM 的 Runner 傳遞給了這個服務(wù),因為在啟動服務(wù)時,需要知道有哪些 Runner 需要在分布式環(huán)境中遠(yuǎn)程啟動。因此,這里的啟動會生成兩個獨立的服務(wù):一個是 API 接口層(`Service`),另一個是 LLM Runner。它們是相互獨立的。

圖片

啟動之后,可以看到與之前相似的 Swagger 頁面,我們可以直接在上面進(jìn)行測試。在這里,我們將行業(yè)設(shè)為"SAAS",產(chǎn)品名稱設(shè)為"BentoML",執(zhí)行后,它可以為我們生成一段廣告詞。這個廣告詞符合我們的需求,看起來像一條推文或者微信的內(nèi)容。如果我們想生成一個房地產(chǎn)行業(yè)的廣告,只需切換行業(yè)為"房地產(chǎn)",就可以得到一條看起來更符合房地產(chǎn)行業(yè)的廣告,其中還包含一個房子的表情圖標(biāo)。

圖片

開發(fā)以及本地的測試完成后,將整個代碼和模型打包成一個 Bento。通過使用 BentoML 的 Build 命令,可以輕松制作一個 Bento 包。制作完成后,還有兩個后續(xù)的可選步驟。

圖片

第一個是將其容器化 containerize,打包成一個鏡像,為后續(xù)的部署使用。

圖片

第二種選擇是可以直接把這個 Bento push 到我們的 Cloud 平臺上,Cloud 平臺會自動幫你執(zhí)行后續(xù)的部署操作。

圖片

Cloud 平臺是一個能夠部署你的 Bento 的平臺。它會將 Bento 自動轉(zhuǎn)化為一個運行在 Kubernetes 上的容器,并在其上運行。這里的例子包括一個 API 服務(wù)器以及多個不同的 runner,包括 LLM 的 runner 和 Text2Image 的 runner 等。此外,在 BentoCloud 上,可以指定擴(kuò)容的方式,可以分別為 API 指定需要擴(kuò)容的節(jié)點數(shù),或者為每個 runner 指定需要的 GPU 數(shù)量或?qū)嵗龜?shù)。

五、OpenLLM 總結(jié)

圖片

OpenLLM 是一個開源的大語言模型(LLM)開發(fā)框架。它支持多種開源的 LLM 模型,并且具有內(nèi)建的兩個關(guān)鍵的 LLM 優(yōu)化,能夠優(yōu)化內(nèi)存使用。此外,它與 LangChain 和 BentoML 都有很好的集成。

責(zé)任編輯:姜華 來源: DataFunTalk
相關(guān)推薦

2019-01-23 11:12:42

機(jī)器學(xué)習(xí)機(jī)器模型預(yù)測工資

2014-06-26 14:08:28

Azure云服務(wù)

2010-03-29 13:35:39

ibmdwRIA

2024-07-31 08:14:17

2021-04-20 12:53:34

Polkadot部署合約

2024-07-31 08:00:00

2022-07-07 14:23:06

人工智能機(jī)器學(xué)習(xí)大數(shù)據(jù)

2024-01-10 09:00:00

OpenAILocalGPT開源大模型

2025-04-02 08:40:00

人工智能大模型AI

2025-03-24 10:55:18

2024-06-18 08:21:31

2023-09-25 10:19:01

模型App開源

2024-08-12 15:55:51

2011-03-14 13:07:18

QMLQt

2021-02-03 15:10:38

GoKubernetesLinux

2025-03-06 07:28:31

DeepSeek大模型人工智能

2025-02-13 08:30:11

2024-06-06 08:06:19

鴻蒙大語言模型LLM模型
點贊
收藏

51CTO技術(shù)棧公眾號