Workers AI 是我們的無伺服器 GPU 驅動的推理平台,在 Cloudflare 的全球網路之上執行。它提供了越來越多的現成模型目錄,這些模型可以使用 Workers 無縫執行,並使開發人員能夠在幾分鐘內構建強大且可擴展的 AI 應用程式。我們已經看到開發人員使用 Workers AI 構建出了驚人的作品,隨著我們繼續擴展平台,我們迫不及待地想看到他們的最新成果。為此,今天我們很高興地宣佈推出一些飽受期待的新功能:Workers AI 上所有大型語言模型 (LLM) 的串流回應、更長的背景資訊和序列視窗以及全精度 Llama-2 模型變體。
如果您以前使用過 ChatGPT,那麼您就會熟悉回應串流的好處,其中回應按權杖逐個流動。LLM 的內部工作方式是使用重複推理過程按順序產生回應,LLM 模型的完整輸出本質上是數百或數千個單獨預測任務的序列。因此,產生一個權杖只需要幾毫秒,而產生完整的回應則需要更長的時間,大約需要幾秒鐘。好消息是,我們可以在產生第一個權杖後立即開始顯示回應,並追加每一個額外的權杖,直到回應完成。這將為終端使用者帶來更好的體驗——隨著文字的產生而逐步顯示文字,不僅能提供即時回應,還能讓終端使用者有時間閱讀和解釋文字。
截至今天,您可以對我們目錄中的任何 LLM 模型使用回應串流,包括非常流行的 Llama-2 模型。下面是它的工作原理。
Server-sent events:瀏覽器 API 中的寶藏
Server-sent events 易於使用、易於在伺服器端實作、合乎標準,並且可在許多平台上原生或作為填充程式廣泛使用。Server-sent events 填補了處理來自伺服器的更新串流的空白,處理事件串流原本所需的樣板代碼如今已不再需要。
.tg {border-collapse:collapse;border-color:#ccc;border-spacing:0;} .tg td{background-color:#fff;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{background-color:#f0f0f0;border-color:#ccc;border-style:solid;border-width:1px;color:#333; font-family:Arial, sans-serif;font-size:14px;font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-lt9p{background-color:#F3F3F3;text-align:left;vertical-align:top} .tg .tg-9qck{background-color:#F3F3F3;font-weight:bold;text-align:left;vertical-align:top} .tg .tg-0lax{text-align:left;vertical-align:top}
Easy-to-use | Streaming | Bidirectional | |
---|---|---|---|
fetch | ✅ | ||
Server-sent events | ✅ | ✅ | |
Websockets | ✅ | ✅ |
易於使用
串流
雙向
curl -X POST \
"https://api.cloudflare.com/client/v4/accounts/<account>/ai/run/@cf/meta/llama-2-7b-chat-int8" \
-H "Authorization: Bearer <token>" \
-H "Content-Type:application/json" \
-d '{ "prompt": "where is new york?", "stream": true }'
data: {"response":"New"}
data: {"response":" York"}
data: {"response":" is"}
data: {"response":" located"}
data: {"response":" in"}
data: {"response":" the"}
...
data: [DONE]
fetch
import { Ai } from "@cloudflare/ai";
export default {
async fetch(request, env, ctx) {
const ai = new Ai(env.AI, { sessionOptions: { ctx: ctx } });
const stream = await ai.run(
"@cf/meta/llama-2-7b-chat-int8",
{ prompt: "where is new york?", stream: true }
);
return new Response(stream,
{ headers: { "content-type": "text/event-stream" } }
);
}
}
✅
const source = new EventSource("/worker-endpoint");
source.onmessage = (event) => {
if(event.data=="[DONE]") {
// SSE spec says the connection is restarted
// if we don't explicitly close it
source.close();
return;
}
const data = JSON.parse(event.data);
el.innerHTML += data.response;
}
Server-sent events
✅
✅
Websockets
✅
✅
比較 fetch、server-sent events 和 websocket
Model | Context length (in) | Sequence length (out) |
---|---|---|
@cf/meta/llama-2-7b-chat-int8 | 2048 (768 before) | 1800 (256 before) |
@cf/meta/llama-2-7b-chat-fp16 | 3072 | 2500 |
要開始在 WorkersAI 的文字產生模型上透過 server-sentevents 使用串流,請在請求輸入中將「stream」參數設定為true。這會將回應格式和 mime-type
變更為 text/event-stream
。
下面是透過 REST API 使用串流處理的範例:
下面是使用 Worker 指令碼的範例:
如果您想在瀏覽器頁面中使用此 Worker 的輸出事件串流,則用戶端 JavaScript 類似於:
您可以將此簡單的程式碼與任何簡單的 HTML 頁面、使用 React 或其他 Web 框架的複雜 SPA 結合使用。
這為使用者建立了更具互動性的體驗,現在,隨著回應的增量建立,使用者會看到頁面更新,而不是看到一個旋轉畫面,等待整個回應序列產生。嘗試在 ai.cloudflare.com 上進行串流。
Workers AI 支援 Llama-2 模型以及我們未來新增到目錄中的任何 LLM 模型的串流文字回應。
但這還不是全部。
更高的精度以及更長的背景資訊和序列長度
Workers AI 推出後,我們從社群聽到的另一個最重要的請求是在我們的 Llama-2 模型中提供更長的問題和答案。在 LLM 術語中,這意味著更高的背景資訊長度(模型在進行預測之前作為輸入的權杖數量)和更高的序列長度(模型在回應中產生的權杖數量)。
我們聽取了建議,並結合串流,今天我們在目錄中新增了更高的 16 位元全精度 Llama-2 變體,並增加了現有 8 位元版本的背景資訊和序列長度。
.tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-9qck{background-color:#F3F3F3;font-weight:bold;text-align:left;vertical-align:top} .tg .tg-0lax{text-align:left;vertical-align:top}
模型
背景資訊長度(輸入)
序列長度(輸出)
@cf/meta/llama-2-7b-chat-int8
2048(之前為 768)
1800(之前為 256)
@cf/meta/llama-2-7b-chat-fp16
3072
2500
串流、更高的精度以及更長的背景資訊和序列長度可提供更好的使用者體驗,並使用 Workers AI 中的大型語言模型啟用新的、更豐富的應用程式。
查看 Workers AI 開發人員文件以獲取更多資訊和選項。如果您對 Workers AI 有任何疑問或意見反應,請在 Cloudflare 社群和 Cloudflare Discord 中與我們聯繫。
如果您對機器學習和無伺服器 AI 感興趣,Cloudflare Workers AI 團隊正在構建一個全球規模的平台和工具,讓我們的客戶能夠在我們的網路之上執行快速、低延遲的推理任務。請查看我們的職位頁面,瞭解工作機會。