目錄
關於排序
探索新演算法:彙編指令
用AlphaGo 的方法尋找最佳演算法
它發現了更快的排序演算法
「交換與複製動作」,神之一手重現?
擴展能力測驗:從「排序」到「雜湊」
結語
首頁 科技週邊 人工智慧 AI重寫排序演算法,速度快70%:DeepMind AlphaDev革新運算基礎,每天呼叫萬億次的函式庫更新了

AI重寫排序演算法,速度快70%:DeepMind AlphaDev革新運算基礎,每天呼叫萬億次的函式庫更新了

Jun 08, 2023 pm 11:05 PM
ai 演算法

「透過交換和複製移動,AlphaDev 跳過了一個步驟,以一種看似錯誤,但實際上是捷徑的方式連接項目。」這種前所未見、違反直覺的思想不禁讓人回想起2016 年那個春天。

七年前,AlphaGo 在圍棋上擊敗人類世界冠軍,如今 AI 又在程式設計上給我們上了一課。

今天凌晨,Google DeepMind CEO 哈薩克的兩句話引爆了電腦領域:「AlphaDev 發現了一種全新且更快的排序演算法,我們已將其開源到主要C 庫中供開發人員使用。這只是AI 提升程式碼效率進步的開始。」

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

##這一次,Google DeepMind 的全新強化學習系統AlphaDev 發現了一種比以往更快的雜湊演算法,這是電腦科學領域中的一種基本演算法,AI 的成果現已被納入LLVM 標準C 庫Abseil 並開源。

這個成果有多重要? AlphaDev 的主要作者之一,Google DeepMind 研究科學家Daniel J. Mankowitz 表示:「我們估計它發現的排序和雜湊演算法每天會在全世界被調用數萬億次。」

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

##AI 似乎從演算法層面加速了世界的運作。

這些演算法改進了LLVM libc 排序庫,對於較短的序列,排序庫的速度提高了70%,對於超過25 萬個元素的序列,速度也能提高約1.7%。 Google DeepMind 表示,這是十多年來排序庫這部分的第一次變更。看起來,現在 AI 不僅可以幫人寫程式碼,而且可以幫我們寫出更好的程式碼。

在最新的部落格中,新系統的作者們對 AlphaDev 進行了詳細介紹。

新的演算法將改變計算基礎

數位社會推動了對運算和能源日益增長的需求。在過去五十年裡,數位時代依靠硬體的改進來跟上需求。但是隨著微晶片接近其物理極限,改進在其上運行的程式碼變得至關重要。對於每天運行數萬億次的程式碼所包含的演算法來說,這尤其重要。

Google DeepMind 的這項研究就是因此產生的,相關論文已發表在《Nature》上,AlphaDev 是一個AI 系統,它使用強化學習來發現演算法,甚至超越了科學家和工程師們幾十年來打磨出來的成果。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

#論文網址:https://www.nature.com/articles /s41586-023-06004-9

#整體來說,AlphaDev 發現了更快的排序演算法。雖然數十億人每天都在使用這些演算法,但沒有人意識到這個演算法還存在優化空間。排序演算法應用範圍廣泛,從線上搜尋結果、社群貼文排序,到電腦以及手機上的各種資料處理,都離不開排序演算法。利用 AI 產生更好的演算法將改變人類程式設計電腦的方式,對日益數位化的社會將產生重大影響。

透過在主要的C 庫中開源新排序演算法,全球數百萬開發人員和公司現在可以在雲端運算、線上購物和供應鏈管理等各行各業的人工智能應用中使用它。這是十多年來對排序庫的首次更改,也是透過強化學習設計的演算法首次被添加到該庫中。這將這視為使用人工智慧逐步優化世界程式碼的重要里程碑。

關於排序

排序演算法是一種依照特定順序排列某些任務的方法。例如,按字母先後順序排列三個字母,從大到小排列五個數字,或對數百萬筆記錄的資料庫進行排序。

這個演算法由來已久,並且得到了很好的演進。其中關於排序的最早一個例子可追溯到公元 2 世紀和 3 世紀,當時學者們在亞歷山大圖書館的書架上手工按字母順序排列了數千本書。隨著工業革命的到來,出現了可以幫助人們進行排序的機器,其中製表機使用打孔卡片存儲信息,這些卡片被用於收集美國 1890 年的人口普查結果。

隨著 1950 年代商用電腦的興起,最早用於排序演算法的電腦科學演算法開始發展。如今,在全球的程式碼庫中有許多不同的排序技術和演算法被用於處理大量的線上資料。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

將一系列未排序的數字輸入到演算法中,輸出已排序的數字。

經過電腦科學家和程式設計師們幾十年的研究,目前的排序演算法已經非常高效,以至於很難再實現進一步的改進,這有點類似於試圖找到一種新的節省電力或更有效率的數學方法,而這些演算法也是電腦科學的基石。

探索新演算法:彙編指令

AlphaDev 從頭開始探索更快的演算法,而不是基於現有演算法之上,除此以外,AlphaDev 還能用於尋找大多數人所不涉足的領域:電腦彙編指令。

彙編指令可用來建立電腦執行的二進位程式碼。開發人員使用諸如 C 之類的高階語言編寫程式碼,但必須將其轉換為電腦能夠理解的“低階”彙編指令。

Google DeepMind 認為這個層次有許多改進的空間,而這些改進在更高階的程式語言中可能很難被發現。在這個層次上,電腦的儲存和操作更加靈活,這意味著存在更多潛在的改進可能性,這些改進可能對速度和能源使用產生更大的影響。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

程式碼通常是用高階程式語言(如 C )寫的。然後,編譯器將其轉換為低階 CPU 指令,稱為組譯指令。彙編器將彙編指令轉換為可執行的機器碼,以便電腦可以運作。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

圖A:C 演算法範例,可對最多兩個元素進行排序;圖B:相應的彙編表示形式。

用AlphaGo 的方法尋找最佳演算法

AlphaDev 基於Google DeepMind 先前的一項成果:在圍棋、西洋棋和象棋等遊戲中打敗世界冠軍的強化學習模式AlphaZero。而 AlphaDev 則展示了這個模型如何從遊戲轉移到科學挑戰,以及從模擬到現實世界的應用。

為了訓練 AlphaDev 發現新的演算法,團隊將排序變成了一個單人的「組裝遊戲」。在每個回合中,AlphaDev 觀察它所產生的演算法和 CPU 中包含的訊息,然後透過選擇一條指令來加入演算法中來下一步棋。

彙編遊戲是非常困難的,因為 AlphaDev 必須在大量可能的指令組合中進行高效搜索,以找到一個可以排序的演算法,並且比當前的最佳演算法更快。指令的可能組合數量類似於宇宙中的粒子數量,或國際象棋(10^120 局)和圍棋(10^700 局)中可能的動作組合的數量,而一個錯誤的動作就可以使整個演算法失效。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

#圖 A:組裝遊戲。玩家 AlphaDev 接收系統 st 的狀態作為輸入,並透過選擇彙編指令加入目前已產生的演算法來下棋。圖 B:獎勵計算。每次移動後,產生的演算法都會輸入測試輸入序列 —— 對於 sort3,這對應於三個元素序列的所有組合。然後演算法會產生一個輸出,將其與排序情況下排序序列的預期輸出進行比較。智能體根據演算法的正確性和延遲獲得獎勵。

在建立演算法時,對於每次的一條指令,AlphaDev 透過將演算法的輸出與預期結果進行比較來檢查它是否正確。對於排序演算法,這意味著無序數字進入,正確排序的數字出來。團隊會獎勵 AlphaDev 對數字的正確排序以及排序的速度和效率,然後 AlphaDev 透過發現正確、更快的程式來贏得比賽。

它發現了更快的排序演算法

AlphaDev 發現了新的排序演算法,這些演算法導致LLVM libc 排序庫得到改進:#對於較短的序列,排序庫的速度提高了70%,對於超過25 萬個元素的序列,速度提高了約1.7%。 

其中,Google DeepMind 團隊更專注於改進三到五個元素的短序列排序演算法。這些演算法是使用最廣泛的演算法之一,因為它們通常作為更大排序函數的一部分被多次調用,改進這些演算法可以提高對任意數量項目進行排序的整體速度。

為了讓新的排序演算法對人們更有用,團隊對演算法進行了逆向工程並將它們翻譯成C ,這是開發人員使用的最流行的程式語言之一。

目前,這些演算法已在LLVM libc 標準排序庫(https://reviews.llvm.org/D118029)中提供,並被全球數百萬開發人員和公司使用。

「交換與複製動作」,神之一手重現?

事實上,AlphaDev 不僅發現了更快的演算法,而且還發現了新的方法。它的排序演算法包含新的指令序列,每次應用時都會節省一條指令 —— 這顯然會產生巨大的影響,因為這些演算法每天都要使用數萬億次。他們把這些稱為「AlphaDev 交換和複製動作」。

這種新穎的方法讓人聯想到AlphaGo 的「第37 步」—— 當時這這種反直覺的下法讓圍觀者目瞪口呆,並導致李世石這位傳奇圍棋選手被打敗。透過交換和複製動作,AlphaDev 跳過了一個步驟,以一種看起來像錯誤但實際上是捷徑的方式連接項目。這表明 AlphaDev 有能力發掘出原創性的解決方案,並挑戰人類對如何改進電腦科學演算法的思考方式。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

左圖:min (A,B,C) 原始的sort3 實作;右圖:AlphaDev交換移動-AlphaDev 發現你只需要min (A,B)。

AI重写排序算法,速度快70%:DeepMind AlphaDev革新计算基础,每天调用万亿次的库更新了

#

左圖:在一個更大的排序演算法中使用max(B,min(A,C,D))的原始實現,用於排序八個元素;右圖:AlphaDev 發現,使用其複製動作時,只需要max(B,min(A,C))。

擴展能力測驗:從「排序」到「雜湊」

在發現更快的排序演算法後,團隊測試了AlphaDev 是否​​可以概括和改進不同的計算機科學演算法:哈希。 

雜湊是運算中用於檢索、儲存和壓縮資料的基本演算法。就像使用分類系統來定位某本書的圖書館員一樣,雜湊演算法可以幫助用戶知道他們正在尋找什麼以及在哪裡可以找到它。這些演算法會取得特定金鑰的資料(例如使用者名稱 “Jane Doe”)並對其進行雜湊處理 —— 這是將原始資料轉換為唯一字串(例如 1234ghfty)的過程。計算機使用此雜湊來快速檢索與密鑰相關的數據,而不是搜尋所有數據。

團隊將 AlphaDev 套用到資料結構中最常用的雜湊演算法之一,嘗試發現更快的演算法。當將其應用於 9-16 位元組範圍的雜湊函數時,AlphaDev 發現的演算法速度提高了 30%。

今年,AlphaDev 的新雜湊演算法已發佈到開源Abseil 庫中,可供全球數百萬開發人員使用,它現在大概每天被使用數萬億次。

開源地址:https://github.com/abseil/abseil-cpp/commit/74eee2aff683cc7dcd2dbaa69b2c654596d8024e

結語

Google DeepMind 透過最佳化和推出改進的排序和雜湊演算法,供世界各地的開發人員使用,AlphaDev 展示了其概括和發現具有現實影響的新演算法的能力。 AlphaDev 可被視為開發通用 AI 工具的一步,它可以幫助優化整個運算生態系統並解決其他造福社會的問題。

雖然在低階彙編指令空間中進行最佳化非常強大,但隨著演算法的成長, AlphaDev 仍存在局限性,團隊目前正在探索其直接在高階語言(如C )中優化演算法的能力,這對開發人員來說更加有用。

AlphaDev 的發現,例如交換和複製動作,不僅表明它可以改進演算法,還可以找到新的解決方案。這些發現或許能夠激勵研究人員和開發人員創建可以進一步優化基礎演算法的技術和方法,以創建更強大和可持續的計算生態系統。

以上是AI重寫排序演算法,速度快70%:DeepMind AlphaDev革新運算基礎,每天呼叫萬億次的函式庫更新了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1273
29
C# 教程
1252
24
C  中的chrono庫如何使用? C 中的chrono庫如何使用? Apr 28, 2025 pm 10:18 PM

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

怎樣在C  中處理高DPI顯示? 怎樣在C 中處理高DPI顯示? Apr 28, 2025 pm 09:57 PM

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C  中的實時操作系統編程是什麼? C 中的實時操作系統編程是什麼? Apr 28, 2025 pm 10:15 PM

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

怎樣在C  中測量線程性能? 怎樣在C 中測量線程性能? Apr 28, 2025 pm 10:21 PM

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

給MySQL表添加和刪除字段的操作步驟 給MySQL表添加和刪除字段的操作步驟 Apr 29, 2025 pm 04:15 PM

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 Apr 30, 2025 pm 07:24 PM

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

deepseek官網是如何實現鼠標滾動事件穿透效果的? deepseek官網是如何實現鼠標滾動事件穿透效果的? Apr 30, 2025 pm 03:21 PM

如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...

See all articles