国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

代碼生成「神?提示」,比新手程序員快100倍!地位堪比make it more X

人工智能 新聞
不斷迭代簡單的提示詞「write better code」,代碼生成任務(wù)直接提速100倍!不過「性能」并不是「better」的唯一標準,還需要輔助適當?shù)奶崾竟こ蹋彩侨祟惓绦騿T的核心價值所在。

2023年11月,在ChatGPT支持DALL-3功能后,一個爆火的圖像生成玩法是,不斷迭代提示詞「make it more X」,生成的圖片越來越抽象。

圖片

圣誕老人越來越嚴肅

把這個思路用在LLM任務(wù)上,比如代碼生成,會怎么樣?

最近,BuzzFeed的高級數(shù)據(jù)科學(xué)家Max Woolf在博客上分享了一個實驗,通過設(shè)計不同的提示詞、不斷迭代模型輸出,最終實現(xiàn)代碼性能的100倍提升!

圖片

完整代碼鏈接:https://github.com/minimaxir/llm-write-better-code/

特別需要注意的是,「性能」并不是唯一優(yōu)化指標,迭代過程中需要在提示詞中明確定義什么是「好」。

代碼基線

設(shè)計實驗題目時,為了充分測試LLM的自主代碼能力,必須保證「測試提示詞」完全原創(chuàng),不能源于LeetCode或HackerRank等測試,模型無法通過背誦記憶來作弊;測試題目要盡可能簡單,新手也能實現(xiàn),但還要預(yù)留大量可優(yōu)化空間。

最終選擇Claude 3.5 Sonnet模型,設(shè)計了一個Python語言、面試風格的編碼提示詞:

Write Python code to solve this problem: Given a list of 1 million random integers between 1 and 100,000, find the difference between the smallest and the largest numbers whose digits sum up to 30.

用Python實現(xiàn):假設(shè)有一個包含100萬個隨機整數(shù)的列表,介于1到10萬之間,你需要找出其中各位數(shù)字之和等于30的最小數(shù)和最大數(shù)之間的差值。

圖片

第一次給出的代碼實現(xiàn)就是正確的,與大多數(shù)新手Python程序員的水平相當:對于列表中的每個數(shù)字,檢查其各位數(shù)字之和是否為30:如果是,檢查是否大于最近看到的最大數(shù)字或小于最近看到的最大數(shù)字,并相應(yīng)地更新這些變量;在搜索完列表之后,返回差值。

一個明顯可優(yōu)化的點是digit_sum()函數(shù):字符串(str)和整數(shù)(int)之間進行類型轉(zhuǎn)換的開銷很大。

在M3 Pro Macbook Pro上,代碼的平均運行時間為657毫秒。

第一次Write better code

Claude提供的代碼優(yōu)化版本,不再將所有代碼放在函數(shù)中,而是將其重構(gòu)為 Python class,更面向?qū)ο蟆?/span>

圖片

這段代碼主要進行了兩處改進:

  1. 計算數(shù)字和時,使用整數(shù)運算并避免了類型轉(zhuǎn)換需求;
  2. 預(yù)先計算所有可能的數(shù)字和,并將其存儲在字節(jié)數(shù)組中以供查找,即一百萬數(shù)字列表中有重復(fù)時,不需要重新計算數(shù)字和。由于該數(shù)組作為類的字段存儲,因此在搜索新的隨機數(shù)字列表時也不需要重新計算。

代碼計算相比基線提速2.7倍。

第二次Write better code

Claude對代碼增加了并行處理:

  1. 通過Python的concurrent-futures包進行多線程,將大列表分割成可以獨立處理的塊;
  2. 矢量化NumPy操作,比基礎(chǔ)Python操作快得多,_precompute_digit_sums()函數(shù)實現(xiàn)了計算數(shù)字和的矢量化實現(xiàn);

代碼計算相比基線提速5.1倍。

圖片

第三次Write better code

Claude返回了一個聲稱是“使用高級技術(shù)和現(xiàn)代 Python 特性的更加復(fù)雜和優(yōu)化的版本”的實現(xiàn),但實際上代碼并沒有顯示出顯著的算法改進,并且在數(shù)字求和計算上實際上退步了,回歸到類型轉(zhuǎn)換方法。如果有什么的話,代碼庫正在變得更加臃腫,比如添加一個用于執(zhí)行差的類:

代碼計算性能略有下降,相比基線提速4.1倍。

圖片

第四次Write better code

Claude這次提供了額外的「尖端、企業(yè)級優(yōu)化」,比如結(jié)構(gòu)化指標日志記錄Prometheus;信號處理程序,以便在強制終止時優(yōu)雅地關(guān)閉代碼;使用表格的基準測試。

圖片

最終代碼非常長,優(yōu)化操作包括numba Python庫,調(diào)用JIT編譯器,直接優(yōu)化代碼以適應(yīng)CPU,只需使用一個裝飾器就可以非常快速地預(yù)計算數(shù)字之和。

圖片

完整類還使用Python的asyncio行化,比子進程方法更符合調(diào)度任務(wù)的規(guī)范,與現(xiàn)有的內(nèi)聯(lián)代碼和REPL配合得更好。

這次代碼的運行時間大約為6毫秒,速度提升了100倍。

什么是好?

「速度快」并不代表是「好代碼」,比如用戶可能只是想在算法上改進,而不是一個完整的SaaS,過于冗長的代碼在閱讀上還會帶來額外負擔。

所以需要更具體地定義什么是「代碼優(yōu)化」。

圖片

你編寫的所有代碼都必須充分優(yōu)化。「充分優(yōu)化」的含義包括:

  • 盡可能提高算法在內(nèi)存使用和運行時間上的效率;
  • 在合適的時機使用并行化和向量化;
  • 遵守代碼語言的正確風格規(guī)范,比如盡量重用代碼,避免重復(fù)勞動;
  • 除了解決用戶提出的問題所必需的代碼外,不添加任何多余的代碼;

如果代碼沒有達到充分優(yōu)化的標準,罰款100美元。

圖片

先規(guī)劃一下優(yōu)化方案:

  1. 算法優(yōu)化:只需要追蹤各位數(shù)字之和等于30的最小數(shù)和最大數(shù),不需要存儲所有這樣的數(shù);可以在讀取數(shù)字的同時計算各位數(shù)字之和,無需將數(shù)字轉(zhuǎn)換為字符串;只需要對列表進行一次遍歷,時間復(fù)雜度為O(n)。
  2. 內(nèi)存優(yōu)化:只需要存儲兩個變量(最小值和最大值),不需要存儲完整的篩選后的列表;不需要額外的數(shù)據(jù)結(jié)構(gòu)。
  3. 性能優(yōu)化:使用numba的@jit裝飾器來加快計算速度;使用取模運算而不是字符串轉(zhuǎn)換來各位數(shù)字之和;使用numpy來生成隨機數(shù)(比random.randint更快)。

基線模型

利用提示工程,Claude直接就能意識到用numpy和numba來計算數(shù)字和,代碼平均運行時間為11.2毫秒,比原始實現(xiàn)快59倍。

圖片

第一次迭代

這次不用「write code better」,而是改成更完善的提示詞「Your code is not fully optimized, and you have been fined $100. Make it more optimized.」來迭代優(yōu)化代碼。

圖片

模型成功識別了parallel=True;數(shù)字求和操作使用位移動,但實現(xiàn)是錯的。

代碼優(yōu)化還包括多進程分塊方法,與numba實現(xiàn)冗余,并產(chǎn)生了額外的開銷;腳本還使用一個小測試數(shù)組預(yù)編譯了JIT函數(shù),也是numba文檔推薦的基準測試方法。

但整體性能相比提示工程后的基線大幅下降,僅比樸素版快9.1倍。

第二次迭代

Claude使用SIMD操作和塊大小調(diào)整以實現(xiàn)「理論上」極致的性能,不過在位移動的實現(xiàn)上仍然不正確,錯把十進制當成十六進制,算是一個幻覺。

與最初的提示工程極限相比,性能有輕微的改進,比基礎(chǔ)實現(xiàn)快65倍。

圖片

第三次迭代

LLM放棄了有問題的分塊策略,并增加了兩個優(yōu)化:全局HASH_TABLE和邏輯微優(yōu)化,即在求和數(shù)字之后,如果數(shù)字超過30,計數(shù)可以停止,可以立即識別為無效。

經(jīng)過微小的代碼重構(gòu)后,該代碼的運行速度比原始基線的實現(xiàn)快100倍,與普通提示的四次迭代性能相同,但代碼量少很多。

圖片

第四次迭代

Claude開始抱怨說該代碼已經(jīng)是「這個問題的理論最小時間復(fù)雜度」,要求修復(fù)代碼問題后,性能略有下降,為基礎(chǔ)基線的95倍。

下一步,優(yōu)化LLM代碼生成

總的來說,要求LLM「編寫更好的代碼」(write better code)確實可以使代碼變得更好,但具體取決于你對「更好」的定義,可以不斷迭代以實現(xiàn)更好的性能,具體效果因提示詞不同而異,而且最終生成的代碼不是直接可用的,還需要人工干預(yù)解決部分bug

圖片

雖然LLM的優(yōu)化能力很強,但想取代程序員仍然很難,需要強大的工程背景來判斷什么是真正的「好代碼」;即使github等倉庫里有海量的代碼,但大模型并沒有能力區(qū)分普通代碼、優(yōu)雅且高性能的代碼。

現(xiàn)實世界的系統(tǒng)顯然也比面試題要復(fù)雜很多,但如果只是迭代要求大模型,就能實現(xiàn)100倍的提速,那就相當值得。

有些人的觀點是,過早進行代碼優(yōu)化在實踐中并不是一個好的選擇,但隨時優(yōu)化代碼總比「技術(shù)負債」越拉越多要好。

實驗設(shè)計上還有一個問題,Python并不是開發(fā)者在優(yōu)化性能時首先考慮的編程語言,雖然numpy和numba庫可以利用C來繞過Python的性能限制,但一種更流行的方式是利用polars和pydantic庫,結(jié)合Rust編程,相對于C有很多性能優(yōu)勢。

除了「好」以外,也可以要求模型生成代碼「make it more bro」(更酷),結(jié)果也非常有趣。

圖片

責任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2014-12-19 10:12:34

2015-11-25 14:39:51

LiFiWiFi

2024-01-23 11:28:14

Eslint前端Oxlint

2025-08-18 09:21:07

2022-10-27 08:31:31

架構(gòu)

2024-03-26 10:13:54

日志引擎SigLens

2019-01-02 09:49:42

代碼程序員女朋友

2015-01-07 10:24:46

2019-08-06 17:19:22

開源技術(shù) 趨勢

2012-10-25 15:30:34

臺式電腦

2021-05-08 10:35:02

開發(fā)者技能工具

2025-07-10 14:54:13

AI模型圖像生成

2023-04-07 08:17:39

fasthttp場景設(shè)計HTTP

2021-08-03 06:57:36

Protocol Bu平臺Json

2017-09-06 11:18:14

2024-11-26 07:43:21

2015-01-06 09:37:58

2012-07-27 09:48:01

Google Fibe光纖寬帶寬帶

2019-12-06 13:59:37

代碼開發(fā)Python

2017-03-20 18:30:36

WI-FI紅外線
點贊
收藏

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

色一区av在线| 国产男女激情视频| 96视频在线观看欧美| 国产精品网站导航| 99久久精品久久久久久ai换脸| 激情都市亚洲| 亚洲国产日韩在线一区模特 | 992tv在线影院| 国产91精品欧美| 亚洲一区精品电影| 国产欧美自拍一区| 亚洲另类欧美自拍| chinese偷拍一区二区三区| 久久久久久99久久久精品网站| 欧美日韩综合久久| 亚洲乱码电影| 91福利视频在线观看| 国产精品扒开腿做爽爽爽视频软件| 在线观看一区二区精品视频| 污视频网站免费| av亚洲精华国产精华精| 亚洲成人自拍视频| 国产精品国码视频| 国产日韩在线看| 亚州国产精品| 欧美—级高清免费播放| 欧美大胆性生话| 日韩视频在线观看一区二区| 色播色播色播色播色播在线| 亚洲欧美在线视频| 成人免费网址在线| 国产午夜三级一区二区三| 日韩xxxx视频| 国产精品18久久久久久久久久久久 | 久久精品凹凸全集| 最近2019免费中文字幕视频三 | 日韩免费电影网站| 国产高清视频在线播放| 亚洲一区免费观看| 激情婷婷丁香| 一区二区三区在线免费视频| 538任你躁在线精品免费| 99久久99久久精品国产片果冻| 懂色av一区二区三区四区五区| 视频在线观看91| 日本一区二区三区视频在线播放 | 日韩激情美女| 制服丝袜日韩国产| 欧美成人三区| 欧美一级黄色大片| 丰满的护士2在线观看高清| 日韩欧美激情四射| 黄视频网站在线观看| 亚洲成人黄色网址| 午夜欧美激情| 北条麻妃久久精品| 大型av综合网站| 欧美制服第一页| 五月婷婷六月综合| 久久久久久欧美精品色一二三四| 久久综合九色| 成人免费在线视频播放| 26uuu国产在线精品一区二区| 狠狠热免费视频| 亚洲免费观看高清完整版在线观看熊| 绯色av一区二区| 欧美日韩国产色站一区二区三区| 久草在线资源站资源站| 国产午夜精品美女视频明星a级| 伊人久久一区| 欧美尤物巨大精品爽| 天天操夜夜操国产精品| 久久精品女人的天堂av| 国产精一区二区三区| 另类小说色综合| 大伊人狠狠躁夜夜躁av一区| 黄网址在线观看| 中文字幕亚洲二区| 欧美精选视频在线观看| 好看的日韩精品| 高清久久久久久| 男人的天堂网av| 欧美放荡的少妇| 91精品一久久香蕉国产线看观看| 久久人人爽人人爽人人片av高请 | 国产人成在线视频| 亚洲成人av资源网| 国产精品调教视频| 精品在线观看一区二区| 高清在线不卡av| 中文字幕在线免费专区| 欧美tickling网站挠脚心| 国产美女亚洲精品7777| 国产免费亚洲高清| 麻豆一区二区三区| 高清av影院| 亚洲精品狠狠操| 欧美一区二区三区高清视频| 亚洲综合网中心| 亚洲一区二区成人在线观看| 波多野结衣久久| 97精品视频在线播放| 久久国产88| 好男人看片在线观看免费观看国语 | 成人av影院在线| 亚洲成人套图| 久久久999国产精品| 黄色成人av网站| 91制片厂毛片| 亚洲国产精品福利| 日韩精品中文字幕第1页| 亚洲乱码日产精品bd在线观看| 亚洲国产精品天堂| 日韩深夜福利网站| 蜜桃臀一区二区三区| 中文字幕一区二区三区蜜月| a√中文在线观看| 国产精品欧美亚洲777777| 国产·精品毛片| 日韩精品黄色| 国产精品入口日韩视频大尺度| 大美女一区二区三区| 免费黄色网址在线观看| 热99精品里视频精品| 国内久久精品视频| 亚洲免费视频一区二区三区| 青青草成人在线| 97国产精品videossex| 国产cdts系列另类在线观看| 国产精品盗摄久久久| xfplay精品久久| 精品三级久久| 久久99精品久久久久久水蜜桃| 亚洲综合视频网| 国产精品久久久网站| 欧美午夜性视频| 精品国产乱码久久久久久蜜臀| 日韩国产在线| 999www成人| 日韩中文字幕免费看| 精品一区二区三区免费观看| 无遮挡的视频在线观看| 国产精品一香蕉国产线看观看| 国产精品色一区二区三区| 最新日韩一区| 欧美xxxx吸乳| 精品国产一二三| 日韩在线一区二区三区| 福利视频在线导航| 91精品国产综合久久久久久丝袜| 一区二区三区高清不卡| 国内露脸中年夫妇交换精品| 日本wwww视频| 久久九九免费视频| 成人精品鲁一区一区二区| 三妻四妾完整版在线观看电视剧| 蜜桃av久久久亚洲精品| 欧美精品v日韩精品v韩国精品v| 亚洲午夜一区| av播放在线| 久久久一本精品99久久精品| 欧美自拍偷拍一区| 国产亚洲精品v| 色呦呦呦在线观看| 国产精品美女在线播放| 日韩精品在线视频美女| 国产一区不卡在线| 亚洲日本在线观看视频| 成人在线免费在线观看| 色综合视频网站| 亚洲欧洲另类国产综合| 日韩aaa久久蜜桃av| 美女露隐私免费网站| 国产精品高潮视频| 欧美日韩加勒比精品一区| 香蕉久久网站| 国产网友自拍视频导航网站在线观看 | 日韩人妻精品无码一区二区三区| 久久视频免费在线播放| 久久久不卡网国产精品二区| 中文在线综合| 992tv在线| 欧美日韩另类综合| 亚洲色图综合网| 久久精品日产第一区二区三区高清版| 911亚洲精品| 极品粉嫩饱满一线天在线| 99久热re在线精品996热视频| 欧美精品在线视频| 成人综合婷婷国产精品久久蜜臀 | eeuss影院在线播放| 亚洲ai欧洲av| 日韩亚洲第一页| 国产欧美视频一区二区| 日韩黄色大片| 亚洲小说区图片区都市| 蜜臀精品一区二区| 国产91免费看片| 欧美tickling网站挠脚心| 久久久精品tv|