成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

借助Modal運行可擴展的Python工作負載

譯文 精選
人工智能 云計算
本文介紹了Modal如何幫助開發者在云端運行基于Python的可擴展AI和數據工作負載,而無需直接管理服務器、容器或GPU

譯者 | 布加迪

審校 | 重樓

如今,大多數使用人工智能(AI)模型的項目都需要大量的計算資源。幾乎每當一個新模型出現,其性能超越之前的模型,它似乎都需要更多的計算資源才能高效運行。很多人會說也有例外,比如DeepSeek模型,但這并非事實。像DeepSeek這樣的模型不輸給更大的模型,但也并非更勝一籌。至少目前來看,模型的大小似乎與模型的性能直接相關。

傳統上,大規模部署AI意味著管理非常復雜的基礎架構,從配置服務器或集群到編寫部署腳本,甚至管理針對特定云的服務。然而,這種開銷不僅成為許多機器學習團隊的一大痛點,還成為限制因素,阻礙他們嘗試新模型,并遏制其創造力。為了避免這些限制因素,我們需要調整方法,而Modal正是讓我們能夠做到這一點,這個統一的云平臺可用于為數據和AI任務運行代碼。

ModalModal Labs2023年推出,這是無需手動設置基礎架構即可運行AI工作負載的平臺。它允許開發者完全使用Python定義工作流,在云托管的計算資源上執行代碼。其目的是通過抽取掉服務器和集群配置來簡化部署。

Modal如何工作?

Modal是一個云平臺,用于在云端運行代碼,無需關注基礎架構。開發者通過Python SDK(軟件開發工具包)與Modal交互,定義Modal在其基礎架構上按需運行的所謂的“應用程序”和“函數”。這種比較新穎的方法又可以稱為“函數即服務”模式,意味著開發者拿來Python函數后,用簡單的裝飾器或API調用即可遠程執行。如果你熟悉云計算,這可能會讓你想起AWS LambdaGoogle Cloud Functions等服務。但盡管表面上有一些相似之處,Modal的工作原理截然不同。

與開發者使用DockerKubernetes準備執行代碼所需的一切這種傳統方法不同,Modal則更進一步,允許開發者用Python代碼指定一切。更準確地說,在Modal中,我們定義容器。容器就像微型虛擬機,只運行你所需的任務,沒有額外的負擔。容器由容器引擎管理,容器引擎使用各種技巧讓程序相互隔離。更準確地說,Modal使用gVisor容器運行時來運行容器。gVisor容器運行時由谷歌開發,旨在滿足對沙盒容器的需求,這種容器能夠在主機操作系統和容器中運行的應用程序之間提供安全隔離邊界。

Modal將根據Python代碼中的指令(而不是YAML文件或類似文件中的指令)構建這些容器。本質上,當我們嘗試在Modal上運行某任務時,要做的第一件事就是在代碼中定義image(鏡像),其中需要定義要在其上運行代碼的Python版本以及運行代碼所需的庫。以下這個示例表明了如何定義一個用于運行來自Hugging FaceFlux模型的鏡像:

import modal
app = modal.App(name="example-dreambooth-flux")
image = modal.Image.debian_slim(python_version="3.10").pip_install(
 "accelerate==0.31.0",
 "datasets~=2.13.0",
 "fastapi[standard]==0.115.4",
 "ftfy~=6.1.0",
 "gradio~=5.5.0",
 "huggingface-hub==0.26.2",
 "hf_transfer==0.1.8",
 "numpy<2",
 "peft==0.11.1",
 "pydantic==2.9.2",
 "sentencepiece>=0.1.91,!=0.1.92",
 "smart_open~=6.4.0",
 "starlette==0.41.2",
 "transformers~=4.41.2",
 "torch~=2.2.0",
 "torchvision~=0.16",
 "triton~=2.2.0",
 "wandb==0.17.6",

如上述代碼所示,一切均由Python處理,無需任何外部文件。用戶在Python代碼中定義依賴項,這些依賴項不會在本地安裝,而是只會在Modal的遠程環境中安裝。

如上所示,在定義實際鏡像之前,我們創建了App類的實例。我們使用這些App對象來表示在Modal上運行的應用程序。我們將創建的所有函數和類都附加到這個App對象上,這樣可以使一切井然有序、易于管理。

以下是用Modal設計的簡單的app

import io
 import modal
 from PIL import Image

 # Define the App (deployable bundle)
 app = modal.App("image-resizer") # groups everything into one deployable unit 

 # Build a lightweight container with Pillow pre-installed
 image = modal.Image.debian_slim().pip_install("Pillow") # container image spec in code 

 # A real Function: resize any image to a target width, keep aspect ratio
 @app.function(image=image, cpu=2) # 2 vCPUs is plenty for Pillow
 def resize_image(img_bytes: bytes, width: int = 256) -> bytes:
 """Return a JPEG resized so its shorter side is `width` pixels."""
 with Image.open(io.BytesIO(img_bytes)) as im:
 ratio = width / min(im.size)
 new_size = (round(im.width * ratio), round(im.height * ratio))
 im = im.resize(new_size, Image.LANCZOS)
 buf = io.BytesIO()
 im.save(buf, format="JPEG", quality=90)
 return buf.getvalue()

 # Local entry-point: run from CLI with `modal run resize.py`
 @app.local_entrypoint() # tells Modal *what* to execute locally
 def main():
 with open("cat.jpg", "rb") as f: # any JPEG in your working dir
 out = resize_image.remote(f.read(), width=256) # remote call
 with open("cat_resized.jpg", "wb") as g:
 g.write(out)
 print("Saved cat_resized.jpg")

根據我們對創建的App對象的處理方式,我們最終得到一個臨時應用程序或已部署的應用程序。

當你使用app.run()modal run CLI命令運行腳本時,創建一個臨時應用程序。它是一個僅在腳本運行時存在的臨時應用程序。另一方面,已部署的應用程序無限期存在,或直到你使用Web UI將其刪除為止。根據你希望通過應用程序實現的目標,你需要從兩者中選擇一個。在這里,計劃如何擴展是一個很重要的因素,因此了解如何使用Modal進行擴展至關重要。

無服務器GPU加速和擴展

大多數無服務器平臺通常僅限于執行CPU密集型任務,或對GPU提供有限的支持。而Modal允許用戶使用單個參數將GPU連接到任何函數。在我們之前的示例中,這并非必需,在CPU上運行代碼會極其緩慢。比如說,要將英偉達的H100 GPU連接到某個函數,并使其在該GPU上運行,我們只需在定義函數時聲明希望這么做即可:

import modal

 app = modal.App()
 image = modal.Image.debian_slim().pip_install("torch")

 @app.function(gpu="H100", image=image)
 def run():
 import torch
 print(torch.cuda.is_available())

在底層,Modal將為實例配置H100,并在上面執行容器。該平臺支持以下GPU類型,從經濟實惠型到最先進型,應有盡有:

  • 英偉達T4
  • 英偉達L4
  • 英偉達A10G
  • 英偉達L40S
  • 英偉達A10040 GB
  • 英偉達A10080 GB
  • 英偉達 H100

這讓用戶可以選擇最符合自身需求的GPU,從而提供對AI用例至關重要的靈活性。我們可以將性能較弱的GPU用于小模型或測試,而將性能更強大的GPU用于推理或訓練,這只需在代碼中更改一個值即可。唯一的區別當然是價格。計算按秒計費,最便宜的英偉達T4 價格為0.000164美元/秒(0.59美元/小時),最昂貴的英偉達H100 價格為0.001097美元/秒(3.95 美元/小時)。

Modal抽取掉這些GPU的配置方式,這意味著用戶無需了解這些GPU是來自AWSGCP還是其他提供商。這使得Modal在資源層面與云無關,因為用戶只需指定要使用的GPUModal會處理其余部分。

除了提供GPU外,Modal還強調配置GPU的速度和規模。Modal編寫了基于Rust的容器運行時,可在不到一秒的時間內啟動容器,使應用程序能夠在幾秒鐘內擴展到數百個GPU支持的worker,而通過云APIKubernetes集群啟動如此多的GPU實例可能需要相當長的時間。這種幾乎即時擴展到數百個GPU支持的worker的靈活性不僅在我們想要以分布式方式訓練模型時至關重要,而且在AI推理工作負載中也至關重要,因為我們經常會遇到請求突然激增的情況,而這些請求有時很難用標準方法來處理。

處理大量數據

大多數AI工作流都需要能夠處理大量數據。Modal還為此提供了一個內置解決方案:Modal Volumes,這是一個分布式文件系統,用于函數運行過程中的數據持久化和共享。這些卷允許開發者在運行時將存儲卷掛載到任何函數的容器中,函數可以從中讀取文件,也可以像寫入到本地文件系統一樣將文件寫入到其中。關鍵區別在于,該卷的持久性超出了單個函數執行的生命周期,這意味著其他函數可以訪問這同一個卷,并在稍后與其交互。

比如說,用戶可以將大型預訓練模型檢查點下載并存儲到其中一個卷中。這使得跨多個容器的多個推理函數可以讀取模型的權重,無需從外部源下載或傳輸模型。本質上,其功能類似將數據緩存在特定的Modal環境中。

雖然這是在Modal中與數據交互的首選方式,但它確實支持其他數據訪問模式,允許用戶將外部云存儲容器(比如S3 存儲桶、Google Cloud Storage 等)直接掛載到函數中。如果你的數據已經存儲在云數據容器中,這非常有用。然而,卷仍然是推薦的方法,因為這是一種性能高得多的解決方案。

AI開發和云應用的戰略意義

AI領域,用戶日益需要更高級的抽象,以簡化復雜工作負載的部署。雖然許多機器學習工程師在其領域知識淵博,但并非所有人都精通搭建部署其設計的模型所需的基礎架構。Modal提供了專為 AI 和數據任務量身定制的、與云無關的無服務器平臺,儼然是將AI引入各行各業的最便捷選擇。這對從業者和整個云行業都具有多重戰略意義。

對于AI開發者來說,Modal可以顯著提升從創意到生產的速度。它可以幫助開發者避免AI項目中常見的瓶頸:將模型提供給用戶或集成到產品中所需的工程工作。在很多情況下,這意味著團隊無需擔心擴展新的機器學習功能,因為所需的基礎架構不會成為限制因素。

Modal與云無關的方法也迎合了一些公司避免被單一云提供商牢牢束縛的愿望。由于配置的GPU來自多家不同的提供商,遭遇中斷的可能性會大大降低。然而這也意味著,如果Modal及其他類似平臺在該領域變得極其突出,我們可能會看到權力從大型云提供商手中轉移出去;它們可能會成為商品化的后端,而不是開發者直接接觸的界面。然而,這種權力轉移不太可能發生,因為采用像Modal這樣的平臺也可能被視為一種供應商鎖定。唯有時間才能告訴我們幾年后市場格局會是什么樣子,因為Modal已經面臨一些初創公司和開源領域的競爭,主要的云服務提供商顯然在努力簡化其產品。

實際用例

Modal的多功能性使其成為各行各業公司的首選平臺。不妨看兩個有趣的用例:Modal如何用于大規模生成式AI推理以及如何用于計算生物學。

Suno是一家提供音樂和語音生成服務的初創公司,它在Modal上運行生產級推理。這使得Suno能夠擴展到數千個并發用戶,無需擴建自己的GPU集群。Modal會根據需要分配盡可能多的資源:在高峰時段,它啟動新的實例來滿足需求;而在非高峰時段,它會動態縮減規模以降低成本。這表明就連非常復雜和強大的模型也可以快速啟動,并根據需求動態調整。

Sphinx Bio案例表明了Modal如何應用于計算生物學中。Sphinx Bio代表研究人員運行的蛋白質折疊模型,類似于谷歌的Alphafold。蛋白質折疊是一種計算密集型的過程,需要大量GPU才能高效運行。通過使用ModalSphinx Bio可以在無需維護集群的情況下針對大型試驗進行擴展,不需要太多的計算能力時縮減規模。此外,由于Modal支持調度,他們可以輕松地調度和排隊多個獨立計算(比如同時折疊多個蛋白質),并讓Modal可以處理計算資源的分配。雖然Sphinx Bio代表了這樣一個用例,但基因組學、物理模擬甚至金融建模等領域的其他公司也必將紛紛效仿。

以上只是兩個示例用例,如果你想了解目前有哪些公司在使用Modal,可以在Modal的官方網站上找到更多用例。

結論

Modal代表了一種新型的云平臺。它不再要求用戶自行管理基礎架構,而是提供了一種以函數為中心的方法,抽取掉大規模發布AI應用程序的諸多復雜性。通過克服AI應用程序發布中的兩大痛點:冗長的部署周期和碎片化的工具,Modal確信在大多數情況下,用戶會選擇簡單、快速和云無關,而不是低層面控制。

盡管這種無服務器方法有效地降低了構建復雜AI服務的門檻,但在某些情況下,用戶可能會決定部署基礎架構,尤其是在對延遲敏感或需要定制硬件的系統中。這完全沒問題,因為沒有適用于所有用例的“最佳”解決方案。話雖如此,Modal無疑將有關“理想”的云平臺應該是什么樣子的討論推向新的方向,至少對于那些開發AI應用程序的人來說是如此。隨著Modal發展壯大并驗證其模式,一大批類似的解決方案可能會出現,從而促使無服務器AI功能更緊密地整合到主流云產品中。Modal的成功至少暗示著,我們可以預期AI基礎架構格局將發生轉變,不僅強調原始性能,還強調易用性。

原文標題:Run Scalable Python Workloads With Modal,作者:Narinder Singh Kharbanda

責任編輯:姜華 來源: 51CTO
相關推薦

2009-03-16 09:16:13

行為擴展WCF.NET

2015-03-18 14:56:58

負載均衡服務器集群

2023-09-12 08:00:00

大數據數據管理Snowflake

2021-09-17 16:05:09

戴爾科技

2017-08-22 10:39:26

2012-07-04 16:50:41

2024-11-27 08:14:43

2013-08-20 13:54:24

Linux工作負載

2023-05-17 10:05:35

組件設計(Modal)組件

2016-08-24 19:22:10

Docker SwarPython應用

2019-05-20 13:20:36

Python編程語言情感分析

2015-07-20 10:24:33

負載虛擬化

2024-04-11 14:12:17

數據中心運營商

2021-09-02 09:42:11

測試軟件可擴展性開發

2023-07-13 12:27:04

2023-02-09 09:08:44

PaSca圖結構數據處理

2021-09-30 16:25:20

物聯網人工智能IoT

2024-12-20 16:56:00

Python面向對象編程

2024-06-11 12:44:24

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99视频+国产日韩欧美 | 精东影业一区二区三区 | 亚洲精品小视频 | 国产精品手机在线 | 黄色片91| 亚洲www啪成人一区二区麻豆 | 天天视频黄 | 亚洲精品免费看 | 国产又粗又大又长 | 在线中文字幕视频 | 国产寡妇亲子伦一区二区三区四区 | 欧美久久网| 欧美日韩国产中文字幕 | 99精品成人| 激情久久五月天 | 午夜在线国语中文字幕视频 | 国产精品婷婷 | 狠狠干在线视频 | 久久精品久久久久 | 欧美在线观看一区 | 国产午夜小视频 | 在线欧美日韩 | 亚洲少妇一区 | 一级片在线观看视频 | 国产在线一区二区三区 | 成人在线黄色 | 成人91视频| 男人的天堂亚洲 | 天天爽天天干 | 日韩精品视频免费在线观看 | 日韩精品久久 | 久久久久成人网 | 午夜aaa| 91精品一区 | 日日操日日干 | 四虎成人在线 | www.青青草 | 91视频免费观看 | 日韩一区二区中文字幕 | 中文字幕在线观看网站 | www.在线播放 |