2023-07-31 11:18:04來(lái)源:機(jī)器之心
「Python 中的 GIL 將不復(fù)存在,這是人工智能生態(tài)系統(tǒng)領(lǐng)域中的巨大勝利。」PyTorch 核心維護(hù)者 Dmytro Dzhulgakov 感慨道。
【資料圖】
GIL 是什么?GIL 的全稱是 Global Interpreter Lock(全局解釋器鎖),它不是 Python 獨(dú)有的,而是在實(shí)現(xiàn) CPython(Python 解釋器)時(shí)引入的一個(gè)概念。我們可以將 GIL 理解為一個(gè)互斥鎖,用來(lái)保護(hù) Python 里的對(duì)象,防止同一時(shí)刻多個(gè)線程執(zhí)行 Python 的字節(jié)碼,從而確保線程安全。
然而,GIL 存在一個(gè)弊端,即在同一時(shí)刻只能有一個(gè)線程在一個(gè) CPU 上執(zhí)行,無(wú)法將多個(gè)線程映射到多個(gè) CPU 上,使得 Python 并不能實(shí)現(xiàn)真正的多線程并發(fā),從而降低了執(zhí)行效率。
現(xiàn)在,Python 團(tuán)隊(duì)已經(jīng)正式接受了刪除 GIL 的這個(gè)提議,并將其設(shè)置為可選模式,可謂是利好廣大開發(fā)者。
做出這一貢獻(xiàn)的是一位來(lái)自 Meta 的名叫 Sam Gross 的軟件工程師,他花費(fèi)了四年多的時(shí)間才完成這一工程。
在得知這一消息后,大家紛紛叫好,深度學(xué)習(xí)三巨頭之一的 Yann LeCun 發(fā)文祝賀:沒(méi)有了 GIL,現(xiàn)在,Python 代碼可以自由的執(zhí)行多線程了。
「Python 中終于沒(méi)有 GIL 了!」
「這是一個(gè)里程碑式的決定,是編碼社區(qū)所熱切期待的?!?/p>
具體細(xì)節(jié)如何,我們接著看下文。
CPython 核心開發(fā)者 Thomas Wouters 撰文描述了 Python 中的無(wú) GIL 細(xì)節(jié),并對(duì)未來(lái)發(fā)展做了展望。
非常感謝所有人對(duì)無(wú) GIL 提議的反饋,整體上都持積極的支持態(tài)度。指導(dǎo)委員會(huì)打算接受無(wú) GIL 提議,并就以下具體細(xì)節(jié)與大家分享。
我們的基本設(shè)想是:
長(zhǎng)期來(lái)看(大約 5 年以上),no-GIL 構(gòu)建應(yīng)是唯一的構(gòu)建;我們希望非常謹(jǐn)慎地向后兼容。我們不希望出現(xiàn)另一個(gè) Python 3 的情況,所有適應(yīng) no-GIL 構(gòu)建所需的任何第三方代碼更改應(yīng)只適用于 with-GIL 構(gòu)建(盡管仍要解決更老 Python 版本的向后兼容性問(wèn)題)。這不適用于 Python 4。我們?nèi)栽诳紤]對(duì)這兩個(gè)構(gòu)建的 ABI 兼容性和其他細(xì)節(jié)的要求,以及對(duì)向后兼容性的影響;在我們承諾完全轉(zhuǎn)向 no-GIL 之前,需要看到社區(qū)的支持。我們不能只是更改默認(rèn)設(shè)置,更希望社區(qū)弄清自己需要做什么工作來(lái)給予支持。我們核心開發(fā)團(tuán)隊(duì)需要獲得新構(gòu)建模式及相關(guān)所有內(nèi)容的經(jīng)驗(yàn)。我們要整理現(xiàn)有代碼中的線程安全性,因而需要弄明白新的 C API 和 Python API。我們?cè)讷@得這些洞見(jiàn)時(shí)還需要傳達(dá)給 Python 社區(qū)的其他人,并確保自身想要做出的更改以及希望他們做出的更改是可取的;在我們默認(rèn) no-GIL 設(shè)置之前的任何時(shí)候,如果事實(shí)證明了,它的破壞性太大導(dǎo)致收益太少,我們希望能夠改變主意。這也就意味著我們會(huì)回滾所有工作,因此在我們確定要將 no-GIL 設(shè)為默認(rèn)方式之前,特定于 no-GIL 的代碼在某種程度上應(yīng)是可識(shí)別的。目前,我們認(rèn)為未來(lái)的道路分為以下三個(gè)階段:
短期內(nèi),我們會(huì)將 no-GIL 構(gòu)建作為一種實(shí)驗(yàn)性構(gòu)建模式,大概是在 3.13 版本(也有可能推遲到 3.14 版本)。之所以是實(shí)驗(yàn)性的,是因?yàn)槲覀兒诵拈_發(fā)團(tuán)隊(duì)雖然支持這一構(gòu)建模式,但不期望整個(gè)社區(qū)都會(huì)支持它。我們需要時(shí)間弄清自己要做什么,至少在 API 設(shè)計(jì)以及打包和分發(fā)方面,從而得到社區(qū)的支持。我們也不鼓勵(lì) distributor 將實(shí)驗(yàn)性 no-GIL 構(gòu)建作為默認(rèn)解釋器發(fā)布。中期來(lái)看,在我們確信得到足夠的社區(qū)支持并使 no-GIL 的生產(chǎn)使用可行后,我們將支持 no-GIL 構(gòu)建,但不是默認(rèn)方式,而是在某個(gè)目標(biāo)日期或某個(gè) Python 版本中使它成為默認(rèn)方式。具體的時(shí)間將取決于很多因素,比如 API 更改最終兼容性如何、社區(qū)認(rèn)為他們?nèi)匀恍枰龆嗌俟ぷ鞯?。我們預(yù)計(jì)這至少需要一至兩年的時(shí)間。一旦我們宣布支持,預(yù)計(jì)將有一些 distributor 會(huì)開始默認(rèn)發(fā)布 no-GIL。長(zhǎng)期來(lái)看,我們希望 no-GIL 成為默認(rèn)方式,并刪除 GIL 的所有痕跡(但不會(huì)不必要地破壞向后兼容性)。我們不希望等待太長(zhǎng)時(shí)間,畢竟兩種常用的構(gòu)建模式同時(shí)存在會(huì)給社區(qū)造成很大的負(fù)擔(dān)(比如需要雙倍測(cè)試資源和 debug 場(chǎng)景)。但是我們也不能急于求成。我們認(rèn)為這一過(guò)程將需要花費(fèi)五年的時(shí)間。當(dāng)然在整個(gè)過(guò)程中,我們整個(gè)開發(fā)團(tuán)隊(duì)將需要實(shí)時(shí)評(píng)估進(jìn)程并對(duì)時(shí)間線進(jìn)行調(diào)整。
關(guān)鍵詞:
「Python中的GIL將不復(fù)存在,這是人工智能生態(tài)系統(tǒng)領(lǐng)域中的巨大勝利。
企業(yè)在試圖保護(hù)其數(shù)據(jù)和存儲(chǔ)系統(tǒng)時(shí)面臨越來(lái)越多的挑戰(zhàn)。然而,零信任存
智通財(cái)經(jīng)獲悉,體育用品股繼續(xù)走高,截至發(fā)稿,特步國(guó)際(01368)漲6 09%
中工網(wǎng)訊7月23日至28日,河南省洛陽(yáng)市總工會(huì)舉辦河洛工匠后備人才培訓(xùn)
【開盤】A股三大股指集體大幅跳空高開,牛市旗手券商股持續(xù)走強(qiáng),股指,a
1、引言開發(fā)者在編碼效率和快速迭代中的痛點(diǎn)場(chǎng)景包括:1 修改代碼后,
碼農(nóng)AI神器又升級(jí)了!就在剛剛,Github官宣,Copilot模型升級(jí),5年內(nèi)80
峰值內(nèi)存消耗是訓(xùn)練深度學(xué)習(xí)模型(如視覺(jué)Transformer和LLM)時(shí)的常見(jiàn)瓶
連接的未來(lái)即將到來(lái),它被稱為5G固定無(wú)線接入(FWA)。這項(xiàng)革命性的技術(shù)
了解2023年物聯(lián)網(wǎng)與邊緣計(jì)算之間的區(qū)別。在數(shù)字化轉(zhuǎn)型時(shí)代,物聯(lián)網(wǎng)(IoT
夏季治安打擊整治行動(dòng)開展以來(lái),省森林公安局明確任務(wù)目標(biāo),對(duì)林區(qū)森林
這些年內(nèi)虧損較高的百億基金,重倉(cāng)股主要集中在鋰電池、光伏、汽車、醫(yī)
巴媒:巴基斯坦西北部爆炸事件已致44人死亡上百人受傷---據(jù)巴基斯坦《
山海關(guān)中國(guó)長(zhǎng)城博物館正式定名
導(dǎo)讀1、俠嵐我也喜歡看,是一部動(dòng)畫連續(xù)劇。2、故事情節(jié)和修真差不多,