![]() ![]() |
高效的機(jī)器學(xué)習(xí)團(tuán)隊(duì) ![]() 本書的主要內(nèi)容有:為機(jī)器學(xué)習(xí)系統(tǒng)編寫自動化測試,容器化開發(fā)環(huán)境,并重構(gòu)有問題的代碼庫。運(yùn)用MLOps和CI/CD實(shí)踐,加速實(shí)驗(yàn)周期并提升機(jī)器學(xué)習(xí)解決方案的可靠性。運(yùn)用精益交付和產(chǎn)品實(shí)踐,提高構(gòu)建符合用戶需求的正確產(chǎn)品的成功率。確定適合的團(tuán)隊(duì)結(jié)構(gòu)及團(tuán)隊(duì)內(nèi)外的協(xié)作方式,以促進(jìn)快速工作流、減少認(rèn)知負(fù)擔(dān),并在組織內(nèi)推廣機(jī)器學(xué)習(xí)實(shí)踐。 編輯推薦 前言晚上9 點(diǎn)25 分,當(dāng)?shù)つ鹊卿涬娔X繼續(xù)修復(fù)一個(gè)錯(cuò)誤時(shí),電腦屏幕上柔和的光芒刺進(jìn)了她黯淡的雙眼,紅色的管道和無數(shù)打開的標(biāo)簽頁充斥著她的屏幕。她吃過晚飯,做完了日,嵤拢牟辉谘。事實(shí)上,她的心思不在這里。這是緊張的一天,既要進(jìn)行長時(shí)間的培訓(xùn),又要與支持團(tuán)隊(duì)就客戶詢問模型為何拒絕貸款申請的問題進(jìn)行來回溝通。盡管對數(shù)據(jù)和模型架構(gòu)進(jìn)行了各種調(diào)整,但模型的性能始終無法提高,她一直在深入調(diào)試。偶爾的堆棧跟蹤只會讓事情變得更糟。她很疲憊,本地機(jī)器上一堆未提交的代碼修改讓她的認(rèn)知負(fù)擔(dān)更重了。但她必須堅(jiān)持下去,她的團(tuán)隊(duì)已經(jīng)比最初的發(fā)布日期晚了四個(gè)月,高管們的不耐煩已經(jīng)顯露無遺。更糟的是,她擔(dān)心自己的工作不保。在最新一輪的成本削減措施中,她所在的公司每十名員工中就有一人被解雇,其中還有幾個(gè)她認(rèn)識的人。她團(tuán)隊(duì)中的每個(gè)人都是善意的、有能力的,但他們每天都被乏味的測試、焦慮的生產(chǎn)部署以及難以辨認(rèn)和易碎的代碼所困擾。經(jīng)過幾個(gè)月的辛勤工作,他們都心力交瘁。他們已經(jīng)盡了最大努力,但感覺就像在建造一棟沒有地基的房子,一切都支離破碎。由于工具、技術(shù)、教程和機(jī)器學(xué)習(xí)從業(yè)者社區(qū)的生態(tài)系統(tǒng)不斷發(fā)展壯大,許多人在開始機(jī)器學(xué)習(xí)(ML)之旅時(shí)勢頭強(qiáng)勁,并很快獲得了信心。然而,當(dāng)我們走出教程筆記本和Kaggle 競賽的受控環(huán)境,進(jìn)入到實(shí)際問題、雜亂數(shù)據(jù)、互聯(lián)系統(tǒng)和目標(biāo)各異的人群的空間時(shí),我們中的許多人不可避免地要在實(shí)踐中努力發(fā)掘ML 的潛力。當(dāng)我們剝開數(shù)據(jù)科學(xué)是最性感的工作的華麗外衣時(shí),我們常常會看到ML從業(yè)人員深陷繁重的手工勞動、復(fù)雜而脆弱的數(shù)據(jù)處理和分析中,以及在生產(chǎn)中永遠(yuǎn)看不到曙光的Sisyphean ML 實(shí)驗(yàn)所帶來的挫敗感。2019 年有87% 的數(shù)據(jù)科學(xué)項(xiàng)目從未投入生產(chǎn)(https://oreil.ly/xy9Xi)。根據(jù)Algorithmia 發(fā)布的《2021 年企業(yè)人工智能/ML 趨勢》(https://oreil.ly/HP6Qh),即使在已經(jīng)成功將ML 模型部署到生產(chǎn)中的公司中,也有64% 的調(diào)查對象表示部署一個(gè)新模型需要一個(gè)多月的時(shí)間,比2020 年的56% 有所增加。Algorithmia 還發(fā)現(xiàn),38% 的受訪企業(yè)在模型部署上花費(fèi)了數(shù)據(jù)科學(xué)家50% 以上的時(shí)間。這些障礙阻礙了人工智能從業(yè)人員應(yīng)用其在人工智能方面的專業(yè)知識,為客戶和企業(yè)實(shí)現(xiàn)人工智能的價(jià)值和承諾,在某些情況下甚至是阻礙了他們的工作。但好在情況并非如此。在過去的幾年里,我們有幸參與了各種數(shù)據(jù)和ML 項(xiàng)目,并與來自多個(gè)行業(yè)的ML 從業(yè)人員進(jìn)行了合作。正如我們在上文所述,雖然存在障礙和痛苦,但也有更好的途徑、做法和工作系統(tǒng),可以讓ML 從業(yè)人員可靠地將支持ML 的產(chǎn)品交付到客戶手中。這就是本書的主旨所在。我們將從自己的經(jīng)驗(yàn)中提煉出一套持久的原則和實(shí)踐,這些原則和實(shí)踐始終幫助我們在現(xiàn)實(shí)世界中有效地交付ML 解決方案。這些實(shí)踐之所以有效,是因?yàn)樗鼈兓跇?gòu)建ML 系統(tǒng)的整體方法。它們超越了ML 的范疇,在各個(gè)子系統(tǒng)(如產(chǎn)品、工程、數(shù)據(jù)、交付流程、團(tuán)隊(duì)拓?fù)浣Y(jié)構(gòu))中創(chuàng)建了重要的反饋回路,使團(tuán)隊(duì)能夠快速安全地失敗、快速實(shí)驗(yàn)并可靠地交付。本書適合人群無論你認(rèn)為你可以,還是你認(rèn)為你不能,你都是對的。 亨利·福特?zé)o論你是學(xué)術(shù)界、企業(yè)、初創(chuàng)公司、大型企業(yè)還是咨詢公司的ML 實(shí)踐者,本書中的原則和實(shí)踐都能幫助你和你的團(tuán)隊(duì)更有效地交付ML 解決方案。本書詳細(xì)介紹了ML 交付技術(shù)的跨職能性質(zhì),與此相一致的是,我們解決了從事ML的團(tuán)隊(duì)中多種角色所關(guān)心的問題和愿望:數(shù)據(jù)科學(xué)家和ML 工程師在過去幾年中,數(shù)據(jù)科學(xué)家的工作范圍發(fā)生了變化。我們不再單純關(guān)注建模技術(shù)和數(shù)據(jù)分析,而是看到人們(或隱或顯地)期望一個(gè)人需要具備全棧數(shù)據(jù)科學(xué)家的能力(https://oreil.ly/jV7EP):數(shù)據(jù)整理、ML 工程、MLOps 和商業(yè)案例制定等。本書闡述了數(shù)據(jù)科學(xué)家和ML 工程師在現(xiàn)實(shí)世界中設(shè)計(jì)和交付ML 解決方案所需的能力。過去,我們曾向數(shù)據(jù)科學(xué)家、ML 工程師、博士生、軟件工程師、質(zhì)量分析師和產(chǎn)品經(jīng)理介紹過本書中的原理、實(shí)踐和上機(jī)練習(xí),并一直收到積極的反饋。與我們合作過的業(yè)內(nèi)人工智能從業(yè)人員都表示,自動化測試和重構(gòu)等實(shí)踐改善了反饋周期、流程和可靠性,讓他們受益匪淺。我們的收獲是,ML社區(qū)渴望學(xué)習(xí)這些技能和實(shí)踐,而這正是我們擴(kuò)大知識共享規(guī)模的嘗試。軟件工程師、基礎(chǔ)設(shè)施和平臺工程師、架構(gòu)師當(dāng)我們就本書所涉及的主題舉辦研討會時(shí),經(jīng)常會遇到在ML 領(lǐng)域工作的軟件工程師、基礎(chǔ)架構(gòu)和平臺工程師以及架構(gòu)師。雖然軟件世界的能力(如基礎(chǔ)設(shè)施即代碼、部署自動化、自動測試)對于在現(xiàn)實(shí)世界中設(shè)計(jì)和交付ML 解決方案是必要的,但它們也是不夠的。要構(gòu)建可靠的ML 解決方案,我們需要拓寬軟件視角,研究其他原則和實(shí)踐,如ML 模型測試、雙軌交付、持續(xù)發(fā)現(xiàn)和ML 治理,以應(yīng)對ML 所特有的挑戰(zhàn)。產(chǎn)品經(jīng)理、交付經(jīng)理、工程經(jīng)理如果我們認(rèn)為只需要數(shù)據(jù)科學(xué)家和ML 工程師就能打造ML 產(chǎn)品,那么我們就會失敗。相反,我們的經(jīng)驗(yàn)告訴我們,如果團(tuán)隊(duì)是跨職能的,并具備必要的ML、數(shù)據(jù)、工程、產(chǎn)品和交付能力,那么團(tuán)隊(duì)的效率就會最高。在本書中,我們將詳細(xì)闡述如何應(yīng)用精益交付實(shí)踐和系統(tǒng)思維來創(chuàng)建結(jié)構(gòu),幫助團(tuán)隊(duì)關(guān)注客戶的聲音、縮短反饋環(huán)路、快速可靠地進(jìn)行實(shí)驗(yàn),并不斷迭代以構(gòu)建正確的東西。正如W. Edwards Deming(https://oreil.ly/eUxHc)曾經(jīng)說過的,一個(gè)糟糕的系統(tǒng)每次都會打敗一個(gè)優(yōu)秀的人。因此,我們分享的原則和實(shí)踐將幫助團(tuán)隊(duì)創(chuàng)建優(yōu)化信息流、減少浪費(fèi)(如交接、依賴性)和提高價(jià)值的結(jié)構(gòu)。如果我們的工作做得正確,本書將邀請你仔細(xì)審視ML 和團(tuán)隊(duì)中一直以來的工作方式,反思這些方式對你的工作有多大幫助,并考慮更好的替代方案。閱讀本書時(shí),請保持開放的心態(tài),對于以工程為重點(diǎn)的章節(jié),請使用開放的代碼編輯器。正如Peter M.Senge(https://oreil.ly/9HEwI)在他的《第五項(xiàng)修煉》(The Fifth Discipline,Doubleday 出版社)一書中所說:獲取信息與真正的學(xué)習(xí)只有很微妙的關(guān)系。如果說我剛剛讀了一本關(guān)于自行車騎行的好書,現(xiàn)在我已經(jīng)學(xué)會了,那是毫無意義的。我們希望你能在自己的團(tuán)隊(duì)中嘗試這些做法,并親身體驗(yàn)它們在實(shí)際項(xiàng)目中帶來的價(jià)值。以持續(xù)改進(jìn)的心態(tài),而不是完美主義的心態(tài)來對待本書。沒有一個(gè)項(xiàng)目是完美的,沒有任何挑戰(zhàn)。復(fù)雜性和挑戰(zhàn)總是存在的(我們知道,健康的挑戰(zhàn)是成長的必要條件),但本書中的實(shí)踐將幫助你最大限度地減少意外的復(fù)雜性,這樣你就可以專注于你的ML 解決方案的基本復(fù)雜性,并負(fù)責(zé)任地交付價(jià)值。本書的編排方式第1 章交付ML 解決方案的挑戰(zhàn)和更好的途徑是全書的精華所在。我們探討了ML 項(xiàng)目失敗的高層次和低層次原因。然后,我們通過在產(chǎn)品、交付、機(jī)器學(xué)習(xí)、工程和數(shù)據(jù)這五個(gè)關(guān)鍵領(lǐng)域采用精益交付實(shí)踐,為交付有價(jià)值的ML解決方案鋪設(shè)了一條更可靠的道路。在其余章節(jié)中,我們將介紹有效的ML團(tuán)隊(duì)和ML實(shí)踐者的實(shí)踐。在第一部分產(chǎn)品和交付中,我們將詳細(xì)介紹交付ML 解決方案所需的其他子系統(tǒng)中的實(shí)踐,如產(chǎn)品思維和精益交付。在第二部分工程中,我們將介紹有助于ML 從業(yè)人員實(shí)施和交付解決方案的實(shí)踐(例如,自動測試、重構(gòu)、有效使用代碼編輯器、持續(xù)交付和MLOps)。在第三部分團(tuán)隊(duì)中,我們將探討影響ML 團(tuán)隊(duì)效率的動態(tài)因素,如信任、共同進(jìn)步、多樣性,以及有助于建立高效團(tuán)隊(duì)的工程效率技術(shù)。我們還探討了組織在將ML 實(shí)踐擴(kuò)展到一個(gè)或兩個(gè)團(tuán)隊(duì)之外時(shí)所面臨的共同挑戰(zhàn),并分享了團(tuán)隊(duì)拓?fù)浣Y(jié)構(gòu)、互動模式和領(lǐng)導(dǎo)力方面的技術(shù),以幫助團(tuán)隊(duì)克服這些擴(kuò)展挑戰(zhàn)。第一部分:產(chǎn)品和交付第2 章,機(jī)器學(xué)習(xí)團(tuán)隊(duì)的產(chǎn)品和交付實(shí)踐我們討論產(chǎn)品發(fā)現(xiàn)技術(shù),這些技術(shù)可以幫助我們發(fā)現(xiàn)機(jī)會,快速測試市場和技術(shù)假設(shè),并找到可行的解決方案。從最有價(jià)值的問題和可行的解決方案入手,我們就能在交付過程中取得成功。我們還通過交付實(shí)踐,幫助我們確定工作的形狀、規(guī)模和順序,以創(chuàng)造穩(wěn)定的價(jià)值流。我們探討了某些ML 問題的實(shí)驗(yàn)性和高不確定性所帶來的獨(dú)特挑戰(zhàn),并討論了雙軌交付模式等技術(shù),這些技術(shù)可以幫助我們在更短的周期內(nèi)更快地學(xué)習(xí)。最后,我們介紹了衡量ML項(xiàng)目關(guān)鍵方面的技術(shù),并分享了識別和管理項(xiàng)目風(fēng)險(xiǎn)的技術(shù)。第二部分:工程學(xué)第3 章和第4 章,有效的依賴管理在本章中,我們將介紹創(chuàng)建一致、可重現(xiàn)、安全且類似于生產(chǎn)的運(yùn)行時(shí)環(huán)境的原則和實(shí)踐,并提供了一個(gè)可讓你親自動手編寫代碼的示例。當(dāng)我們開始運(yùn)行并交付解決方案時(shí),你將看到本章中的實(shí)踐將如何使你和你的隊(duì)友檢出即可使用,毫不費(fèi)力地創(chuàng)建一致的環(huán)境,而不是陷入依賴地獄。第5 章和第6 章,ML 系統(tǒng)的自動測試這些章節(jié)為你提供了測試你的ML 解決方案組件(軟件測試、模型測試或數(shù)據(jù)測試)的標(biāo)準(zhǔn)。我們將展示自動化測試如何幫助我們縮短反饋周期,減少人工測試的煩瑣工作,或者更糟糕的是,修復(fù)人工測試中漏掉的生產(chǎn)缺陷。我們描述了軟件測試范式對ML 模型的限制,以及ML 適應(yīng)度函數(shù)和行為測試如何幫助我們擴(kuò)展ML 模型的自動化測試。我們還將介紹全面測試大型語言模型(LLM)和LLM 應(yīng)用程序的技術(shù)。第7 章,通過簡單技巧為你的代碼編輯器增效我們將向你展示如何配置代碼編輯器(PyCharm 或VS Code),以幫助你更有效地編寫代碼。在通過幾個(gè)步驟配置好集成開發(fā)環(huán)境后,我們將介紹一系列鍵盤快捷鍵,它們可以幫助你自動重構(gòu)、自動檢測和修復(fù)問題,以及瀏覽代碼庫而不會迷失在雜草中等。第8 章, 重構(gòu)與技術(shù)債務(wù)管理在本章中,我們將借鑒軟件設(shè)計(jì)的智慧,幫助我們設(shè)計(jì)可讀、可測試、可維護(hù)和可演進(jìn)的代碼。本著邊做邊學(xué)的精神,你將看到我們?nèi)绾卫糜袉栴}的、雜亂的和易碎的筆記本,并應(yīng)用重構(gòu)技術(shù)迭代改進(jìn)我們的代碼庫,使其達(dá)到模塊化、可測試和可讀的狀態(tài)。你還將學(xué)習(xí)到一些技術(shù),這些技術(shù)可以幫助你和你的團(tuán)隊(duì)將技術(shù)債務(wù)顯性化,并采取行動將其保持在健康的水平。第9 章,面向ML 的MLOps 和機(jī)器學(xué)習(xí)的持續(xù)交付(CD4ML)我們將從廣闊的視角闡述MLOps 和CI/CD(持續(xù)集成和持續(xù)交付)的真正含義。劇透:這不僅僅是自動化模型部署和定義CI 管道。我們?yōu)镃I/CD 在ML 項(xiàng)目中的獨(dú)特形式描繪了一幅藍(lán)圖,并介紹了如何設(shè)置藍(lán)圖中的每個(gè)組件,以創(chuàng)建可靠的ML 解決方案,并將你的團(tuán)隊(duì)成員從重復(fù)和無差別的勞動中解放出來,使他們能夠?qū)W⒂谄渌邇r(jià)值的問題。我們還將了解CD4ML 如何充當(dāng)風(fēng)險(xiǎn)控制機(jī)制,幫助團(tuán)隊(duì)堅(jiān)持ML 治理和負(fù)責(zé)任人工智能的標(biāo)準(zhǔn)。第三部分:團(tuán)隊(duì)第10 章,打造高效機(jī)器學(xué)習(xí)團(tuán)隊(duì)的基石在本章中,我們將跳出機(jī)制的束縛,去理解在高效團(tuán)隊(duì)中實(shí)現(xiàn)良好實(shí)踐的人際因素。我們將介紹有助于創(chuàng)建安全、以人為本和以成長為導(dǎo)向的團(tuán)隊(duì)的原則和實(shí)踐。我們將探討團(tuán)隊(duì)中的信任、溝通、共同目標(biāo)、有目的的進(jìn)步和多樣性等話題。我們將分享一些需要注意的反模式,以及一些你可以用來培養(yǎng)協(xié)作文化、有效交付和學(xué)習(xí)的策略。第11 章,有效的機(jī)器學(xué)習(xí)組織本章介紹了人工智能團(tuán)隊(duì)的各種形態(tài),并探討了組織在將其人工智能實(shí)踐擴(kuò)展到多個(gè)團(tuán)隊(duì)時(shí)所面臨的共同挑戰(zhàn)。我們借鑒并調(diào)整了《團(tuán)隊(duì)拓?fù)洹罚↖T Revolution Press)一書中討論的策略,概述了獨(dú)特的結(jié)構(gòu)、原則和實(shí)踐,幫助團(tuán)隊(duì)在工作流程與集中的專業(yè)知識、協(xié)作和自主之間找到平衡。我們評估了這些結(jié)構(gòu)的優(yōu)勢和局限性,并為其發(fā)展提供指導(dǎo),以滿足組織的需求。最后,我們討論了有意識的領(lǐng)導(dǎo)力及其支持性實(shí)踐在塑造敏捷、反應(yīng)迅速的ML 組織中的作用。其他想法在結(jié)束前言之前,我們想談四件事。第一,我們要承認(rèn),ML 不僅僅是監(jiān)督學(xué)習(xí)和LLM。我們還可以使用其他優(yōu)化技術(shù) [ 如強(qiáng)化學(xué)習(xí)(https://oreil.ly/7PjY6)、運(yùn)籌學(xué)(https://oreil.ly/ZezrC)、仿真(https://oreil.ly/UVhfB)] 來解決數(shù)據(jù)密集型(甚至是數(shù)據(jù)貧乏型)問題。此外,ML 并非靈丹妙藥,有些問題不用ML 也能解決。盡管我們在全書的代碼示例中選擇了一個(gè)監(jiān)督學(xué)習(xí)問題(貸款違約預(yù)測)作為錨定示例,但其原理和實(shí)踐的實(shí)用性并不局限于監(jiān)督學(xué)習(xí)。例如,關(guān)于自動測試、依賴管理和代碼編輯器生產(chǎn)力的章節(jié)甚至對強(qiáng)化學(xué)習(xí)也很有用。第2 章中概述的產(chǎn)品和交付實(shí)踐對任何產(chǎn)品或問題空間的探索和交付階段都很有用。第二,隨著生成式人工智能和LLM 進(jìn)入公眾視野和許多組織的產(chǎn)品路線圖,我們和我們的同事有機(jī)會與組織合作,共同構(gòu)思、塑造和交付可利用以下功能的產(chǎn)品生成式人工智能。雖然LLM 已使我們引導(dǎo)或約束模型實(shí)現(xiàn)其預(yù)期功能的方式發(fā)生了范式轉(zhuǎn)變,但精益產(chǎn)品交付和工程的基本原理并沒有改變。事實(shí)上,本書中的基本工具和技術(shù)已經(jīng)幫助我們盡早測試假設(shè)、快速迭代和可靠交付,從而即使在處理生成式人工智能和LLM 中固有的復(fù)雜問題時(shí),也能保持敏捷性和可靠性。第三,關(guān)于文化的作用:機(jī)器學(xué)習(xí)的有效性和本書中的實(shí)踐不是也不可能是一個(gè)人的努力。這就是我們將本書命名為《高效的機(jī)器學(xué)習(xí)團(tuán)隊(duì)》的原因。例如,你不可能是唯一編寫測試的人。在我們合作過的組織中,如果(團(tuán)隊(duì)、部門甚至組織內(nèi)部)在這些精益和敏捷實(shí)踐方面達(dá)成了文化上的一致,那么個(gè)人就會變得最有效率。這并不意味著你需要與整個(gè)組織一起煮沸海洋;只是單打獨(dú)斗是不夠的。正如史蒂夫- 喬布斯曾經(jīng)說過的那樣:偉大的事業(yè)從來不是一個(gè)人的功勞。它們是由一個(gè)團(tuán)隊(duì)完成的。第四,本書不是關(guān)于生產(chǎn)力(如何盡可能多地發(fā)布功能、故事或代碼),也不是關(guān)于效率(如何以最快的速度發(fā)布功能、故事或代碼)。相反,它關(guān)注的是有效性,如何快速、可靠、負(fù)責(zé)任地構(gòu)建正確的產(chǎn)品。本書講述的是如何通過移動和有效的移動方式找到平衡。本書中的原則和實(shí)踐一直在幫助我們成功地提供ML 解決方案,我們相信它們也能幫助你做到這一點(diǎn)。排版約定本書采用以下排版約定。斜體(Italic)表示新術(shù)語、URL、電子郵件地址、文件名和文件擴(kuò)展名。等寬字體(Constant width)表示程序清單,在段落內(nèi)表示程序元素,例如變量、函數(shù)名稱、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。粗體等寬字體(Constant width bold)表示應(yīng)由用戶原封不動輸入的命令或其他文本。使用代碼示例補(bǔ)充材料(代碼示例、練習(xí)等)可在以下網(wǎng)址下載:? https://github.com/davified/loan-default-prediction? https://github.com/davified/ide-productivity? https://github.com/davified/refactoring-exercise如果你在使用代碼示例時(shí)遇到技術(shù)問題或困難,請發(fā)送電子郵件至support@oreilly.com。本書旨在幫助你完成工作。一般來說,如果本書提供了示例代碼,你可以在你的程序和文檔中使用。除非你要復(fù)制代碼的重要部分,否則不需要聯(lián)系我們獲得許可。例如,編寫一個(gè)使用了本書多段代碼的程序并不需要獲得許可。銷售或分發(fā)OReilly 書籍中的示例需要獲得許可。通過引用本書和示例代碼回答問題不需要許可。將本書中的大量示例代碼納入你的產(chǎn)品文檔需要獲得許可。我們感謝但一般不要求署名。署名通常包括標(biāo)題、作者、出版商和ISBN。例如:Effective Machine Learning Teams by David Tan, Ada Leung, and David Colls (OReilly). Copyright 2024 David Tan Rui Guan, Ada Leung Wing Man, and David Colls, 978-1-098-14463-0。如果你認(rèn)為對代碼示例的使用超出了合理使用或上述許可范圍,請隨時(shí)通過permissions@oreilly.com 聯(lián)系我們。OReilly 在線學(xué)習(xí)平臺(OReilly Online Learning)近40 年來,OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。公司獨(dú)有的專家和改革創(chuàng)新者網(wǎng)絡(luò)通過OReilly 書籍、文章以及在線學(xué)習(xí)平臺,分享他們的專業(yè)知識和實(shí)踐經(jīng)驗(yàn)。OReilly 在線學(xué)習(xí)平臺按照您的需要提供實(shí)時(shí)培訓(xùn)課程、深入學(xué)習(xí)渠道、交互式編程環(huán)境以及來自O(shè)Reilly 和其他200 多家出版商的大量書籍與視頻資料。更多信息,請?jiān)L問網(wǎng)站:https://www.oreilly.com/。聯(lián)系我們?nèi)魏斡嘘P(guān)本書的意見或疑問,請按照以下地址聯(lián)系出版社。美國:OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區(qū)西直門南大街2 號成銘大廈C 座807 室(100035)奧萊利技術(shù)咨詢(北京)有限公司我們?yōu)楸緯_設(shè)了一個(gè)網(wǎng)頁,列出了勘誤、示例和其他信息。你可以訪問該網(wǎng)頁:https://oreil.ly/effective-ml-teams。有關(guān)我們的書籍和課程的新聞和信息,請?jiān)L問https://oreilly.com。我們的LinkedIn:https://linkedin.com/company/oreilly-media。我們的YouTube:https://youtube.com/oreillymedia。致謝當(dāng)我們開始寫這本書時(shí),我們的初衷是分享在構(gòu)建ML 系統(tǒng)過程中幫助過我們的要點(diǎn)實(shí)踐。但我們最終得到的是一本全面的指南,我們堅(jiān)信它將提升ML 團(tuán)隊(duì)的共同標(biāo)準(zhǔn),并改變團(tuán)隊(duì)塑造和交付ML產(chǎn)品的方式。如果沒有那些以身作則、言行一致、影響并塑造了我們的方法的人,這本書是不可能完成的。我們要感謝在OReilly 的那些出色的同事們,他們幫助這本書成為現(xiàn)實(shí):Nicole Butterfield,Melissa Potter,Gregory Hyman,Kristen Brown,Nicole Taché,Judith McConville,David Futato,Karen Montgomery,Kate Dullea,以及其他在幕后不斷改進(jìn)這本書的編輯、設(shè)計(jì)師和工作人員。從本書的構(gòu)思到出版,他們始終在努力完善這本書。特別感謝我們的技術(shù)審閱者,他們花費(fèi)時(shí)間和精力認(rèn)真閱讀了300 多頁的內(nèi)容,并提供了深思熟慮和坦誠的反饋:Hannes Hapke,Harmeet Kaur Sokhi,Mat Kelcey,Vishwesh Ravi Shrimali。來自David Tan感謝Nhung 在我寫這本書的深夜里給予我的耐心和支持。沒有你的支持,我不可能完成這本書。我看到了什么,Jacob 和Jonas,一棵樹!永遠(yuǎn)保持好奇心。特別要感謝Jeffrey Lau,你的指導(dǎo)沒有白費(fèi)。感謝Thoughtworks 過去和現(xiàn)在的同事們,他們教會了我很多關(guān)于提問之美的知識,并告訴我可以踏上新的道路。我想一一列舉你們的名字,但名單太長了。你們知道自己是誰, 衷心感謝你們的坦誠、善良和出色。特別感謝Sue Visic、Dave Colls 和Peter Barnes 在本書寫作過程中給予的鼓勵(lì)和支持。Neal Ford 當(dāng)我向你請教一些關(guān)于寫書的后勤問題時(shí),你不遺余力地與我分享了你的寫作過程、如何檢驗(yàn)想法,并向我介紹了Stephen King 和Annie Dillard 的寫作理念。你沒必要這么做,但你做到了。謝謝你,讓我受益匪淺。在此,我衷心感謝我的合作者Ada 和Dave。你們提升了這本書的質(zhì)量和廣度,超出了我的想象,我很高興看到這本指南能通過我們的集體經(jīng)驗(yàn)幫助ML 團(tuán)隊(duì)和從業(yè)人員。來自Ada Leung我要感謝我的伙伴、朋友和家人。你們知道自己是誰。你們無盡的鼓勵(lì)和對我與他人合著一本書的欽佩(是啊,我知道,對吧!)讓我意識到,與聰明絕頂、令人印象深刻的技術(shù)專家為伍是多么酷的一件事。我還要感謝我一路走來遇到的Thoughtworks 同事,他們在遠(yuǎn)方給了我很多啟發(fā),我也有幸得到了他們的指導(dǎo),他們對知識共享的熱情和慷慨為我樹立了很高的榜樣。沒有比烏班圖哲學(xué)更貼切的詞來形容這個(gè)社區(qū)了:因?yàn)槲覀兪牵晕沂。最后,致我的合作作者大衛(wèi)和戴夫:感謝你們在整個(gè)旅程中給予我的堅(jiān)定支持。通過分享我們的想法和發(fā)現(xiàn)我們集體知識的廣度和重疊,我意識到我是多么珍視團(tuán)隊(duì)合作和友情。這是一種真正的快樂和榮幸。來自David Colls我要感謝我的家人,感謝他們在周末、電影之夜和籃球賽場上,忍受我這個(gè)丈夫和父親連續(xù)幾個(gè)月撰寫、評論和研究內(nèi)容。我要感謝世界各地的許多Thoughtworks 同事,他們先我們一步著書立說,對技術(shù)提出了變革性的觀點(diǎn),激發(fā)了我們的決心,并向我們展示了好的一面。就近而言,我要感謝十多年來與我共事的所有澳大利亞思想工作者,他們拓寬了我的視野,豐富了我的專業(yè)和為人。我要特別感謝Thoughtworks 澳大利亞公司數(shù)據(jù)與人工智能部門的所有成員,我有幸與他們合作,共同創(chuàng)造了新的東西,這本書里有你們每個(gè)人的影子。我還要感謝我們的客戶,感謝他們對我們的信任,讓我們?yōu)樗麄冏畲蟮臋C(jī)遇和挑戰(zhàn)開發(fā)新的方法。最后,我要感謝我的合著者David 和Ada,感謝他們的專業(yè)知識和洞察力、對我的想法的反饋,以及在本書中提煉和分享我們知識的結(jié)構(gòu)化方法。與你們合作非常愉快。 David Tan是一名首席機(jī)器學(xué)習(xí)工程師,曾與多家組織合作,交付數(shù)據(jù)和機(jī)器學(xué)習(xí)系統(tǒng)及產(chǎn)品。 Ada Leung是Thoughtworks的資深業(yè)務(wù)分析師和產(chǎn)品負(fù)責(zé)人,擁有跨技術(shù)、商業(yè)和政府服務(wù)的交付與咨詢經(jīng)驗(yàn)。 David Colls是一位技術(shù)領(lǐng)導(dǎo)者,擁有豐富的經(jīng)驗(yàn),幫助軟件、數(shù)據(jù)和機(jī)器學(xué)習(xí)團(tuán)隊(duì)實(shí)現(xiàn)卓越成果。 目錄前言 1第1 章 在交付機(jī)器學(xué)習(xí)解決方案中的挑戰(zhàn)與優(yōu)化路徑 151.1 ML:承諾與失望 .161.1.1 繼續(xù)看好ML .161.1.2 為什么ML 項(xiàng)目會失敗 171.2 有更好的方法嗎?系統(tǒng)思維和精益如何提供幫助 .241.2.1 你無法通過MLOps解決你的問題 .251.2.2 看到整體:以系統(tǒng)思維透視有效的ML 交付 261.2.3 有效交付ML 所需的五項(xiàng)修煉 .281.3 結(jié)論 .49第一部分 產(chǎn)品和交付第2 章 機(jī)器學(xué)習(xí)團(tuán)隊(duì)的產(chǎn)品和交付實(shí)踐 552.1 ML 產(chǎn)品發(fā)現(xiàn) 592.1.1 發(fā)現(xiàn)產(chǎn)品商機(jī) 612.1.2 確定產(chǎn)品機(jī)會的畫布.622.1.3 快速設(shè)計(jì)、交付和測試解決方案的技術(shù) .692.2 啟動:讓團(tuán)隊(duì)走向成功 .742.2.1 啟動:它是什么,我們怎么做 .752.2.2 如何計(jì)劃和運(yùn)行啟動.762.2.3 用戶故事:MVP 的構(gòu)建模塊 812.3 產(chǎn)品交付882.3.1 交付活動的節(jié)奏 892.3.2 衡量產(chǎn)品和交付 932.4 結(jié)論 .98第二部分 工程學(xué)第3 章 有效的依賴管理:原則和工具 1033.1 如果我們的代碼在任何地方、任何時(shí)候都能正常工作,會怎樣 1043.1.1 更好的方法 退房走人 1063.1.2 有效管理依賴性的原則 .1073.1.3 依賴性管理工具 1103.2 Docker 和Batect 速成課程 1183.2.1 容器是什么 . 1193.2.2 使用batect 減少Docker 中移動部件的數(shù)量 1233.3 結(jié)論 131第4 章 實(shí)踐中的有效依賴管理 . 1334.1 背景:機(jī)器學(xué)習(xí)開發(fā)工作流 .1334.1.1 確定要容器化的內(nèi)容1344.1.2 動手練習(xí):通過容器化實(shí)現(xiàn)可復(fù)現(xiàn)的開發(fā)環(huán)境1374.2 安全的依賴管理 .1494.2.1 移除不必要的依賴項(xiàng)1504.2.2 自動化安全漏洞檢查1524.3 總結(jié) 157第5 章 自動化測試:快速移動而不破壞 1595.1 自動化測試:快速可靠迭代的基礎(chǔ)1615.1.1 從為什么開始:測試自動化的好處 1625.1.2 如果自動化測試如此重要,為什么我們不去做呢 1665.2 ML 系統(tǒng)全面測試策略的構(gòu)建模塊 1695.2.1 識別測試組件 .1695.2.2 優(yōu)秀測試的特點(diǎn)及避免的陷阱 1755.2.3 如何:測試的結(jié)構(gòu) 1805.3 軟件測試.1825.3.1 單元測試 1825.3.2 訓(xùn)練冒煙測試 .1855.3.3 API 測試 1875.3.4 后部署測試 .1915.4 結(jié)論 193第6 章 自動化測試:ML 模型測試 1956.1 模型測試.1956.1.1 模型測試的必要性 1966.1.2 測試ML 模型的挑戰(zhàn)1976.1.3 ML 模型的適應(yīng)度函數(shù) 1996.1.4 模型指標(biāo)測試(全局和分層) 2016.1.5 行為測試 2056.1.6 測試大型語言模型:為什么和如何 2086.2 重要的模型測試補(bǔ)充實(shí)踐 .2136.2.1 錯(cuò)誤分析和可視化 2146.2.2 從生產(chǎn)環(huán)境中學(xué)習(xí),通過關(guān)閉數(shù)據(jù)收集循環(huán) 2166.2.3 開閉測試設(shè)計(jì) .2196.2.4 探索性測試 .2206.2.5 改進(jìn)模型的方法 2216.2.6 設(shè)計(jì)以最小化失敗成本 .2226.2.7 生產(chǎn)中的監(jiān)控 .2246.2.8 整合所有內(nèi)容 .2256.3 下一步:應(yīng)用你所學(xué)到的知識 2286.3.1 逐步改進(jìn) 2286.3.2 展示價(jià)值 2296.4 結(jié)論 230第7 章 通過簡單技巧為你的代碼編輯器增效 2317.1 了解IDE 的好處(以及其令人驚訝的簡單性) 2337.1.1 為什么我們應(yīng)該關(guān)心IDE 2337.1.2 如果IDE 如此重要,為什么我還沒有學(xué)過它們 2357.2 計(jì)劃:通過兩個(gè)階段提高生產(chǎn)力 2367.2.1 階段1:配置你的IDE 2377.2.2 階段2:主角 鍵盤快捷鍵 2457.2.3 做到了 2577.3 結(jié)論 262第8 章 重構(gòu)與技術(shù)債務(wù)管理 2638.1 技術(shù)債務(wù):我們齒輪中的沙子 2648.1.1 通過測試、設(shè)計(jì)和重構(gòu)達(dá)到健康的技術(shù)債務(wù)水平 2668.1.2 重構(gòu)基礎(chǔ) 2698.2 如何重構(gòu)筆記本(或有問題的代碼庫) 2718.2.1 計(jì)劃你的重構(gòu)之旅:路線圖 2718.2.2 旅程:上路 .2778.2.3 回顧我們的成就 2898.3 實(shí)際世界中的技術(shù)債務(wù)管理 .2948.3.1 技術(shù)債務(wù)管理技術(shù) 2948.3.2 從積極的角度看待技術(shù)債務(wù):系統(tǒng)健康評分 2978.4 總結(jié):讓優(yōu)秀變得簡單 301第9 章 面向ML 的MLOps 和機(jī)器學(xué)習(xí)的持續(xù)交付(CD4ML) . 3039.1 MLOps:優(yōu)勢與缺失的拼圖 3059.1.1 MLOps 101 3069.1.2 嗅覺信號:我們錯(cuò)過了什么的提示 3129.2 機(jī)器學(xué)習(xí)的持續(xù)交付 3169.2.1 CD4ML 的好處 .3169.2.2 持續(xù)交付原則速成課程 .3179.2.3 構(gòu)建CD4ML 的基礎(chǔ):創(chuàng)建一個(gè)生產(chǎn)就緒的ML 系統(tǒng) .3209.3 CD4ML 如何支持機(jī)器學(xué)習(xí)治理和負(fù)責(zé)任的人工智能 3319.4 總結(jié) 335第三部分 團(tuán)隊(duì)第10 章 打造高效機(jī)器學(xué)習(xí)團(tuán)隊(duì)的基石 . 33910.1 機(jī)器學(xué)習(xí)團(tuán)隊(duì)面臨的常見挑戰(zhàn) .34110.2 高效團(tuán)隊(duì)的內(nèi)部構(gòu)建模塊34510.2.1 信任:作為基礎(chǔ)的構(gòu)建模塊 34610.2.2 溝通 35410.2.3 多樣性成員35810.2.4 有目的的共享進(jìn)步 36110.2.5 內(nèi)部策略以建立有效團(tuán)隊(duì) .36410.3 改善工程效率以提升工作流 36610.3.1 反饋循環(huán) 36710.3.2 認(rèn)知負(fù)荷 36910.3.3 流狀態(tài) .36910.4 結(jié)論 373第11 章 有效的機(jī)器學(xué)習(xí)組織 37511.1 ML 組織面臨的常見挑戰(zhàn) .37811.2 有效的組織作為團(tuán)隊(duì)的團(tuán)隊(duì) 37911.2.1 價(jià)值驅(qū)動的投資組合管理的角色 38011.2.2 團(tuán)隊(duì)拓?fù)淠P?38211.2.3 機(jī)器學(xué)習(xí)團(tuán)隊(duì)的團(tuán)隊(duì)拓?fù)?.38611.2.4 組織策略以建立高效團(tuán)隊(duì) .39911.3 有意領(lǐng)導(dǎo) 40111.3.1 為有效團(tuán)隊(duì)創(chuàng)建結(jié)構(gòu)和系統(tǒng) .40211.3.2 參與利益相關(guān)者并協(xié)調(diào)組織資源 40311.3.3 培養(yǎng)心理安全 40311.3.4 推動持續(xù)改進(jìn) 40411.3.5 將失敗視為學(xué)習(xí)機(jī)會 40511.3.6 構(gòu)建我們希望擁有的文化 .40511.3.7 鼓勵(lì)團(tuán)隊(duì)在工作中玩耍 40511.4 結(jié)論 407
你還可能感興趣
我要評論
|