劃重點(diǎn)
01OpenAI推出新功能“預(yù)測(cè)輸出”,使GPT-4o輸出速度提升5倍,編程任務(wù)完成時(shí)間縮短至原先的20秒。
02“預(yù)測(cè)輸出”功能僅支持GPT-4o和GPT-4o mini兩個(gè)模型,以API形式提供。
03實(shí)驗(yàn)結(jié)果顯示,加持“預(yù)測(cè)輸出”的GPT-4o響應(yīng)時(shí)間比之前快了2-4倍,保持高精度。
04然而,使用“預(yù)測(cè)輸出”功能需注意,非最終完成部分的tokens將按完成tokens費(fèi)率收費(fèi)。
05除此之外,OpenAI還提供了其他延遲優(yōu)化方法,如加速處理token、生成更少token等。
以上內(nèi)容由大模型生成,僅供參考
金磊 發(fā)自 凹非寺
量子位 | 公眾號(hào) QbitAI
OpenAI出了個(gè)新功能,直接讓ChatGPT輸出的速度原地起飛!
這個(gè)功能叫做“預(yù)測(cè)輸出”(Predicted Outputs),在它的加持之下,GPT-4o可以比原先快至多5倍。
以編程為例,來感受一下這個(gè)feel:
為啥會(huì)這么快?用一句話來總結(jié)就是:
跳過已知內(nèi)容,不用從頭開始重新生成。
因此,“預(yù)測(cè)輸出”就特別適合下面這些任務(wù):
在文檔中更新博客文章
迭代先前的響應(yīng)
重寫現(xiàn)有文件中的代碼
而且與OpenAI合作開發(fā)這個(gè)功能的FactoryAI,也亮出了他們?cè)诰幊倘蝿?wù)上的數(shù)據(jù):
從實(shí)驗(yàn)結(jié)果來看,“預(yù)測(cè)輸出”加持下的GPT-4o響應(yīng)時(shí)間比之前快了2-4倍,同時(shí)保持高精度。
并且官方還表示:
原先需要70秒完成的編程任務(wù),現(xiàn)在只需要20秒。
值得注意的是,目前“預(yù)測(cè)輸出”功能僅支持GPT-4o和GPT-4o mini兩個(gè)模型,且是以API的形式。
對(duì)于開發(fā)者而言,這可以說是個(gè)利好消息了。
網(wǎng)友們?cè)诰實(shí)測(cè)消息一出,眾多網(wǎng)友也是坐不住了,反手就是實(shí)測(cè)一波。
例如Firecrawl創(chuàng)始人Eric Ciarla就用“預(yù)測(cè)輸出”體驗(yàn)了一把將博客文章轉(zhuǎn)為SEO(搜索引擎優(yōu)化)的內(nèi)容,然后他表示:
速度真的超級(jí)快。
它就像在API調(diào)用中添加一個(gè)預(yù)測(cè)參數(shù)一樣簡(jiǎn)單。
另一位網(wǎng)友則是在已有的代碼之上,“喂”了一句Prompt:
change the details to be random pieces of text.將詳細(xì)信息更改為隨機(jī)文本片段。
來感受一下這個(gè)速度:
也有網(wǎng)友曬出了自己實(shí)測(cè)的數(shù)據(jù):
總而言之,快,是真的快。
怎么做到的?對(duì)于“預(yù)測(cè)輸出”的技術(shù)細(xì)節(jié),OpenAI在官方文檔中也有所介紹。
OpenAI認(rèn)為,在某些情況下,LLM的大部分輸出都是提前知道的。
如果你要求模型僅對(duì)某些文本或代碼進(jìn)行細(xì)微修改,就可以通過“預(yù)測(cè)輸出”,將現(xiàn)有內(nèi)容作為預(yù)測(cè)輸入,讓延遲明顯降低。
例如,假設(shè)你想重構(gòu)一段 C# 代碼,將 Username 屬性更改為 Email :
///public class User { ///public string FirstName { get; set; } ///public string LastName { get; set; } ///public string Username { get; set; } }
你可以合理地假設(shè)文件的大部分內(nèi)容將不會(huì)被修改(例如類的文檔字符串、一些現(xiàn)有的屬性等)。
通過將現(xiàn)有的類文件作為預(yù)測(cè)文本傳入,你可以更快地重新生成整個(gè)文件。
import OpenAI from "openai"; const code = ` ///public class User { ///public string FirstName { get; set; } ///public string LastName { get; set; } ///public string Username { get; set; } } `; const openai = new OpenAI(); const completion = await openai.chat.completions.create({ model: "gpt-4o", messages: [ { role: "user", content: "Replace the Username property with an Email property. Respond only with code, and with no markdown formatting." }, { role: "user", content: code } ], prediction: { type: "content", content: code } }); // Inspect returned data console.log(completion);
使用“預(yù)測(cè)輸出”生成tokens會(huì)大大降低這些類型請(qǐng)求的延遲。
不過對(duì)于“預(yù)測(cè)輸出”的使用,OpenAI官方也給出了幾點(diǎn)注意事項(xiàng)。
首先就是我們剛才提到的僅支持GPT-4o和GPT-4o-mini系列模型。
其次,以下API參數(shù)在使用預(yù)測(cè)輸出時(shí)是不受支持的:
n values greater than 1
logprobs
presence_penalty greater than 0
frequency_penalty greater than 0
audio options
modalities other than text
max_completion_tokens
tools - function calling is not supported
除此之外,在這份文檔中,OpenAI還總結(jié)了除“預(yù)測(cè)輸出”之外的幾個(gè)延遲優(yōu)化的方法。
包括“加速處理token”、“生成更少的token”、“使用更少的輸入token”、“減少請(qǐng)求”、“并行化”等等。
文檔鏈接放在文末了,感興趣的小伙伴可以查閱哦~
One More Thing雖然輸出的速度變快了,但OpenAI還有一個(gè)注意事項(xiàng)引發(fā)了網(wǎng)友們的討論:
When providing a prediction, any tokens provided that are not part of the final completion are charged at completion token rates.在提供預(yù)測(cè)時(shí),所提供的任何非最終完成部分的tokens都按完成tokens費(fèi)率收費(fèi)。
有網(wǎng)友也曬出了他的測(cè)試結(jié)果:
未采用“預(yù)測(cè)輸出”:5.2秒,0.1555美分
采用了“預(yù)測(cè)輸出”:3.3秒,0.2675美分
嗯,快了,也貴了。
OpenAI官方文檔:https://platform.openai.com/docs/guides/latency-optimization#use-predicted-outputs
參考鏈接:[1]https://x.com/OpenAIDevs/status/1853564730872607229[2]https://x.com/romainhuet/status/1853586848641433834[3]https://x.com/GregKamradt/status/1853620167655481411