隆重推出Constellation,將AI加入Cloudflare堆棧

來源:Cloudflare
作者:Cloudflare
時間:2023-05-29
1599
Cloudflare Workers生態(tài)系統(tǒng)現(xiàn)已提供廣泛的產品和功能,涵蓋計算、托管、存儲、數據庫、流式傳輸、聯(lián)網、安全等等。一直以來,我們不斷嘗試鼓勵其他人從傳統(tǒng)軟件架構轉移出來,并證明和記錄在我們的技術棧上構建可全球擴展的復雜應用程序是可行的。

640.png

Cloudflare Workers生態(tài)系統(tǒng)現(xiàn)已提供廣泛的產品和功能,涵蓋計算、托管、存儲、數據庫、流式傳輸、聯(lián)網、安全等等。一直以來,我們不斷嘗試鼓勵其他人從傳統(tǒng)軟件架構轉移出來,并證明和記錄在我們的技術棧上構建可全球擴展的復雜應用程序是可行的。

今天,我們高興地宣布Constellation已正式加入到Cloudflare技術棧中,使開發(fā)人員能夠在Cloudflare網絡上運行預先訓練好的機器學習模型和推理任務。

我們的Supercloud再添磚瓦

機器學習和人工智能最近成為了熱門話題,但事實上,我們多年來一直在日常生活中使用這些技術,即使我們沒有意識到。例如,我們的手機、電腦、汽車和家庭助手等都擁有人工智能。它已經無處不在。

然而,對于開發(fā)人員來說,它還沒有成為一種商品。開發(fā)人員通常需要理解其背后的數學原理,相關軟件和工具分散且復雜,而且運行這些框架和數據所需的硬件或云服務成本高昂。

今天,我們的技術棧引入另一個功能,使每個人都可以在Cloudflare Workers上運行機器學習模型并執(zhí)行推理任務。

640 (1).png

Constellation簡介

Constellation允許您通過Cloudflare Workers腳本使用預先訓練的機器學習模型運行快速、低延遲的推理任務。

可用Constellation部署的一些應用程序示例如下:

·圖像或音頻分類或物體檢測

·數據中的異常檢測

·文本翻譯、摘要或相似性分析

·自然語言處理

·情緒分析

·語音識別或文本轉語音

·問題回答

開發(fā)人員可以將任何受支持的模型上傳到Constellation。他們可以獨立訓練這些模型,也可以從機器學習中心(例如HuggingFace或ONNX Zoo)下載預先訓練好的模型。

然而,并不是每個人都想訓練模型或瀏覽互聯(lián)網以獲取他們尚未測試過的模型。因此,Cloudflare也將維護一個經過驗證和可供使用的模型目錄。

我們打造的Constellation提供卓越的開發(fā)人員體驗和易于使用的API。以下是一個示例,可幫助您開始使用。

圖像分類應用程序

在這個例子中,我們將構建一個由Constellation推理API和SqueezeNet模型驅動的圖像分類應用程序。SqueezeNet是一個卷積神經網絡(CNN),在開源的ImageNet數據庫上使用超過100萬張圖像進行預先訓練,可將圖像分類到不超過1000個類別中。

與最早的圖像分類CNN和基準之一AlexNet相比,Constellation速度要快得多(約3倍),體積小得多(約1/500),同時依然能保證類似的準確性水平。其小體量尤其適合在資源有限的便攜式設備或自定義硬件上運行。

首先,讓我們使用ONNX運行時創(chuàng)建一個新的Constellation項目?,F(xiàn)在,Wrangler已經內置Constellation相關功能,可以使用`constellation`關鍵字調用。

$npx wrangler constellation project create"image-classifier"ONNX

現(xiàn)在讓我們創(chuàng)建包含項目綁定的wrangler.toml配置文件:

1686210134220.png

安裝Constellation客戶端API庫:

$npm install cloudflare/constellation--save-dev

將預訓練的SqueezeNet 1.1 ONNX模型上傳到項目。

$wgethttps://github.com/microsoft/onnxjs-demo/raw/master/docs/squeezenet1_1.onnx

$npx wrangler constellation model upload"image-classifier""squeezenet11"squeezenet1_1.onnx

如前所述,SqueezeNet將圖像分類到不超過1000個對象類別中。這些類別實際上是一組同義詞集即synset的形式。每個synset具有一個id和一個標簽;它源于普林斯頓大學的WordNet數據庫術語,也用于標記ImageNet圖像數據庫。

為了將SqueezeNet的結果轉換為人類可讀的圖像類別,我們需要一個將synset ID(從模型獲得)映射到對應標簽的文件。

$mkdir src;cd src

$wgethttps://raw.githubusercontent.com/microsoft/onnxjs-demo/master/src/data/imagenet.ts

最后,讓我們編寫并部署我們的圖像分類腳本。

1686210165760.png

這個腳本從請求中讀取圖像,將其解碼為一個多維float32張量(目前僅解碼PNG,但我們可以增加其他格式),將其輸入到Constellation中運行的SqueezeNet模型,獲取結果,將結果與ImageNet類別列表進行匹配,并返回圖像的人類可讀標簽。

是不是非常簡單?我們測試一下:

$curl https://ai.cloudflare.com/demos/image-classifier-F file=@images/mountain.png|jq.name

alp

$curl https://ai.cloudflare.com/demos/image-classifier-F file=@images/car.png|jq.name

convertible

$curl https://ai.cloudflare.com/demos/image-classifier-F file=@images/dog.png|jq.name

Ibizan hound

640 (2).png

可在此看到概率的不同水平。模型對阿爾卑斯山和敞篷車的分類非常確定,但伊比贊獵犬的概率較低。照片中的狗確實是另一個品種。

這個小應用程序演示了,使用機器學習模型和Constellation在Workers上構建應用程序時是多么容易和快捷。您可以在這里在此處查看完整的源代碼并自行部署該應用程序。

Transformers模型

Transformers是由Google推出的深度學習模型,旨在處理序列輸入數據,常用于自然語言處理(NLP)任務,例如翻譯、摘要或情感分析,以及計算機視覺(CV)任務,例如圖像分類。

Transformers.js是一個比較受歡迎的Demo,它從HuggingFace加載Transformers模型,并在您的瀏覽器內使用編譯為WebAssembly ONNX Runtime來運行它們。我們將這個演示移植到使用Constellation API來運行。

如下鏈接打開我們的版本:https://transformers-js.pages.dev/

640 (3).png

與Workers的互操作性

Constellation另一個有趣的元素是,由于它原生運行在Workers中,您可以將其與我們堆棧中的其他產品和API進行編排。您可以使用KV、R2、D1、Queues等任何產品,甚至電子郵件。

以下Worker示例通過電子郵件路由從您在Cloudflare上的域接收電子郵件,使用t5-small情感分析模型運行Constellation,添加一個帶有結果得分的標題,并將其轉發(fā)到目標地址。

1686210241508.png

現(xiàn)在,您可以使用Gmail或任何電子郵件客戶端,根據“X-Sentiment”標題為您的郵件應用規(guī)則。例如,您可能希望在所有憤怒的郵件到達時將其移動到收件箱以外的不同文件夾中。

開始使用Constellation

Constellation已啟動內測。如果想加入Constellation的等待列表,請前往儀表板,點擊賬戶下的“Workers”選項卡,然后點擊“請求訪問”按鈕。我們的團隊將分批開通權限,您的帳戶獲得使用權限后將收到電子郵件通知。

640 (4).png

與此同時,您可以閱讀我們的Constellation開發(fā)人員文檔進一步了解其工作原理和API。Constellation可以通過Wrangler使用,也可以直接在儀表板UI中進行管理。Wrangler是我們的命令行工具,用于配置、構建和部署使用Cloudflare開發(fā)人員產品的應用程序。

我們非常期待了解您如何在應用程序中使用機器學習/人工智能。Constellation將不斷改進,提供更高的限制、支持更多運行時和更大的模型,但我們希望聽取您的意見。您的反饋將對我們的產品優(yōu)化策略產生重要影響。

最后要說的是:今天,我們一直在討論如何編寫使用Constellation的Workers腳本,但這里有一個關于Constellation本身的事實:Constellation本身就是通過WebAssembly、Workers、R2和我們的API構建的。

原文鏈接:點擊前往 >
文章來源:Cloudflare
版權說明:本文內容來自于Cloudflare,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
個人VIP