【CSDN 編者按】人工智能和機(jī)器學(xué)習(xí)經(jīng)過(guò)十年多的發(fā)展,在過(guò)去的幾年間,各類(lèi)工具數(shù)量迎來(lái)了持續(xù)的爆發(fā)式的增長(zhǎng),機(jī)器學(xué)習(xí)也正式由科研走進(jìn)工業(yè)生產(chǎn)階段。本文作者 —— 來(lái)自硅谷一家初創(chuàng)公司的計(jì)算機(jī)科學(xué)家 Chip Huyen 梳理挖掘出 202 個(gè)機(jī)器學(xué)習(xí)工具,并進(jìn)行分類(lèi)研究,總結(jié)出了至關(guān)重要的兩點(diǎn):
-
開(kāi)源已經(jīng)變成一種行業(yè)標(biāo)準(zhǔn),任何一個(gè)剛起步的公司,都必須與現(xiàn)有的開(kāi)源工具進(jìn)行競(jìng)爭(zhēng);
-
如果必須在人工智能專(zhuān)家和工程師之間做一個(gè)選擇,那么請(qǐng)選擇工程師。
作者 | Chip Huyen,本文已獲作者翻譯授權(quán)
譯者 | 羅昭成,責(zé)編 | 唐小引
頭圖 | CSDN 下載自東方 IC
出品 | CSDN(ID:CSDNnews)
以下為譯文:
為了更好地理解現(xiàn)在的機(jī)器學(xué)習(xí)、人工智能的工具,更好地預(yù)測(cè)它們的前景。我收集了所有我能收集到的有關(guān)人工智能與機(jī)器學(xué)習(xí)的資料。這些資源來(lái)源以下幾個(gè)方面:
-
全棧深度學(xué)習(xí),
https://github.com/alirezadir/Production-Level-Deep-Learning -
LF AI 基金會(huì)全景圖,
https://landscape.lfai.foundation/ -
人工智能與數(shù)據(jù)全景圖,
http://dfkoz.com/ai-data-landscape/ -
媒體列出的眾多 AI 初創(chuàng)公司
-
我在 Twitter(
https://twitter.com/chipro/status/1202815757593108480)和 LinkedIn(
https://www.linkedin.com/posts/chiphuyen_machinelearning-machinelearningproduction-activity-6608605129010753536-bdZ7)中收到的回復(fù) -
其他人(朋友、網(wǎng)友、風(fēng)投等)與我分享的內(nèi)容
我從中過(guò)濾掉使用機(jī)器學(xué)習(xí)做產(chǎn)品的公司(如,使用機(jī)器學(xué)習(xí)提供數(shù)據(jù)分析的公司)、不常用的工具或沒(méi)有人使用的工具之后,還有 202 個(gè)機(jī)器學(xué)習(xí)的工具。這里(
https://docs.google.com/spreadsheets/d/1OV0cMh2lmXMU9bK8qv1Kk0oWdc_Odmu2K5sOULS9hHQ/)有完整的列表。如果有你覺(jué)得應(yīng)該包含但我沒(méi)有列出來(lái)的工具,請(qǐng)告訴我。
免責(zé)申明
-
這個(gè)列表是我在 2019 年的時(shí)候整理的,在過(guò)去的 6 個(gè)月,市場(chǎng)中可能會(huì)有一些變化。
-
有一些科技公司有大量的工具,我并不能一一列舉。如 Amazon Web Services 提供了超過(guò) 165 種完整的服務(wù)。
-
有許多不知名或者已經(jīng)不存在的公司并沒(méi)有在此分析的數(shù)據(jù)之中。
本文包含以下 6 部分內(nèi)容:
-
概述
-
機(jī)器學(xué)習(xí)的發(fā)展歷史
-
機(jī)器學(xué)習(xí)前途未卜
-
機(jī)器學(xué)習(xí)運(yùn)維(MLOps)面臨的問(wèn)題
-
開(kāi)源與開(kāi)放核心
-
總結(jié)
概述
創(chuàng)建一個(gè)機(jī)器學(xué)習(xí)的產(chǎn)品(
https://github.com/chiphuyen/machine-learning-systems-design),包含以下 4 個(gè)步驟:
-
項(xiàng)目立項(xiàng)
-
數(shù)據(jù)處理
-
建模與訓(xùn)練
-
提供產(chǎn)品服務(wù)
我將我統(tǒng)計(jì)出來(lái)的機(jī)器學(xué)習(xí)工具,根據(jù)這些工具對(duì)上面步驟的支持情況,對(duì)所有機(jī)器學(xué)習(xí)工具進(jìn)行分類(lèi)。當(dāng)然,這里面不包含項(xiàng)目立項(xiàng)相關(guān)的內(nèi)容,它需要的是項(xiàng)目管理工具,而不是機(jī)器學(xué)習(xí)工具。分類(lèi)這件事情并沒(méi)有看起來(lái)那么簡(jiǎn)單,很多工具都可以幫助你完成多個(gè)事情。并且它們模棱兩可的解釋?zhuān)膊⒉荒茏屛覀兒芎美斫馑淖饔茫裣旅娴倪@些描述:“我們突破了數(shù)據(jù)科學(xué)的極限”,“我們將 AI 項(xiàng)目轉(zhuǎn)變成商業(yè)成果”,“像呼吸一樣,隨意使用你的數(shù)據(jù)”,還有我最喜歡的一句:“我們馳騁在數(shù)據(jù)科學(xué)中。”
每個(gè)工具都有它最擅長(zhǎng)的部分,我將包含多種能力的工具分類(lèi)到它最擅長(zhǎng)的那一類(lèi)中。如果它擅長(zhǎng)所有部分,我就將它們放在 N 合一這個(gè)類(lèi)別中。當(dāng)然,分類(lèi)中還包含基礎(chǔ)設(shè)施提供商,他們提供訓(xùn)練與存儲(chǔ)的基礎(chǔ)設(shè)施,并且大部分都是云服務(wù)提供商。
機(jī)器學(xué)習(xí)的發(fā)展歷史
首先,我將這些工具發(fā)布的時(shí)間進(jìn)行了整理。如果這個(gè)工具是一個(gè)開(kāi)源項(xiàng)目,我從該項(xiàng)目的第一次提交開(kāi)始,查找項(xiàng)目公開(kāi)的時(shí)間;如果是一家公司,我使用它在 Crunchbase 上注冊(cè)的時(shí)間作為工具的發(fā)布時(shí)間。基于這些數(shù)據(jù),我繪制了各類(lèi)工具每年發(fā)布的數(shù)量圖。
工具數(shù)量圖
不出所料,數(shù)據(jù)中可以看到,隨著深度學(xué)習(xí)的發(fā)展,在 2012 年開(kāi)始迎來(lái)爆發(fā)式的增長(zhǎng)。
-
前卷積神經(jīng)網(wǎng)絡(luò)時(shí)代(2012 年之前)
直到 2011 年,機(jī)器學(xué)習(xí)主要工作都是在建模和訓(xùn)練模型上,那時(shí)的一些框架,到現(xiàn)在還很流行(如:Scikit-Learn),當(dāng)然還有一些框架為現(xiàn)在的發(fā)展留下了深遠(yuǎn)的影響。很多機(jī)器學(xué)習(xí)工具開(kāi)始于 2012 年前,一直持續(xù)優(yōu)化迭代到今天,直到它們 IPO(Cloudera、Datadog、Alteryx)或者被收購(gòu),或者成為社區(qū)流行的開(kāi)源項(xiàng)目(Spark、Flink、Kafka)。
-
高速發(fā)展階段(2012 - 2015 年)
當(dāng)機(jī)器學(xué)習(xí)的社區(qū)采用“數(shù)據(jù)驅(qū)動(dòng)”的方法時(shí),機(jī)器學(xué)習(xí)的發(fā)展就變成了數(shù)據(jù)處理的發(fā)展。每年在每個(gè)類(lèi)別中工具的發(fā)布數(shù)量,也清晰地展現(xiàn)出了這一點(diǎn)。在 2015 年,有 57% 數(shù)據(jù)處理工具。
工具數(shù)量增長(zhǎng)曲線(xiàn)
-
生產(chǎn)階段(2016 年至今)
純粹的技術(shù)研究對(duì)機(jī)器學(xué)習(xí)領(lǐng)域來(lái)說(shuō)非常重要,但是大多數(shù)公司并沒(méi)有足夠的研究經(jīng)費(fèi)支持技術(shù)研究,除非對(duì)應(yīng)的技術(shù)研究能在短期內(nèi)應(yīng)用在真實(shí)的商業(yè)場(chǎng)景中。隨著機(jī)器學(xué)習(xí)的研究與發(fā)展,海量的數(shù)據(jù)與處理模型的增長(zhǎng),使得機(jī)器學(xué)習(xí)越來(lái)越觸手可得。越來(lái)越多的人為他們的應(yīng)用找到使用機(jī)器學(xué)習(xí)的場(chǎng)景,這也近一步增加了我們對(duì)機(jī)器學(xué)習(xí)工具的需求。
在 2016 年,Google 宣布使用神經(jīng)網(wǎng)絡(luò)來(lái)提高 Google 翻譯的準(zhǔn)確度(
https://ai.googleblog.com/2016/09/a-neural-network-for-machine.html),這也是深度學(xué)習(xí)應(yīng)用在真實(shí)商業(yè)場(chǎng)景中的先例之一。從那時(shí)起,有很多的機(jī)器學(xué)習(xí)工具被開(kāi)發(fā)出來(lái),幫助我們更好的做人工智能的產(chǎn)品。
機(jī)器學(xué)習(xí)前途未卜
現(xiàn)在有很多人工智能相關(guān)的初創(chuàng)公司,它們中大多數(shù)都是將機(jī)器學(xué)習(xí)用于它們的產(chǎn)品(如提供業(yè)務(wù)分析或客戶(hù)支持等產(chǎn)品),而不是做機(jī)器學(xué)習(xí)工具的初創(chuàng)公司(創(chuàng)建工具來(lái)幫助其他人實(shí)現(xiàn)產(chǎn)品)。用投資人的話(huà)來(lái)說(shuō),他們大多數(shù)都是在人工智能的垂直領(lǐng)域。在 2019 年福布斯排行榜中,50 家人工智能公司,其中只有 7 家是做機(jī)器學(xué)習(xí)工具的公司。
當(dāng)你去一家公司,告訴他們,使用你的產(chǎn)品可以減少一半客戶(hù)支持的投入,因此應(yīng)用類(lèi)的產(chǎn)品能夠更好的售賣(mài)、商業(yè)化。但是機(jī)器學(xué)習(xí)相關(guān)的工具卻很難賣(mài)出去,但是這些工具對(duì)人工智能的影響非常大,因?yàn)樗麄兊哪繕?biāo)不是做某一個(gè)單一的應(yīng)用程序,而是在做一個(gè)生態(tài)。許多公司可以提供相似的人工智能產(chǎn)品,但是在創(chuàng)建機(jī)器學(xué)習(xí)產(chǎn)品的流程中,通常很少有工具能夠共存。
經(jīng)過(guò)我廣泛的搜索調(diào)查,我卻只能找到大約 200 多個(gè)人工智能的工具,與傳統(tǒng)軟件相比,這點(diǎn)工具是非常微不足道的。如果你想找一個(gè)傳統(tǒng) Python 應(yīng)用程序的測(cè)試工具,花兩分鐘時(shí)間,你在 Google 上至少能找到 20 個(gè)。但是如果你想找一個(gè)測(cè)試機(jī)器模型的工具,你就很難能夠找到了。
機(jī)器學(xué)習(xí)運(yùn)維(MLOps)面臨的問(wèn)題
很多傳統(tǒng)軟件開(kāi)發(fā)的工具也可以用于人工智能產(chǎn)品的開(kāi)發(fā)中,但是,人工智能產(chǎn)品中有很多獨(dú)有的挑戰(zhàn),它們需要特有的工具去處理。
對(duì)于傳統(tǒng)的軟件工程師來(lái)說(shuō),寫(xiě)代碼是最難的一部分。但對(duì)于機(jī)器學(xué)習(xí)來(lái)說(shuō),寫(xiě)代碼只是挑戰(zhàn)中很小的一部分。開(kāi)發(fā)一個(gè)可以在商業(yè)中使用的模型非常困難,并且成本很高。大多數(shù)公司并不會(huì)將重點(diǎn)放在模型的開(kāi)發(fā)上,而是使用現(xiàn)有的模型。
對(duì)于機(jī)器學(xué)習(xí)來(lái)說(shuō),使用更多、更好的數(shù)據(jù),能夠?qū)崿F(xiàn)更好效果的應(yīng)用程序。大多數(shù)的公司都將重點(diǎn)放在數(shù)據(jù)優(yōu)化上,而不是機(jī)器學(xué)習(xí)算法的優(yōu)化上。由于數(shù)據(jù)的快速變化,我們的機(jī)器學(xué)習(xí)應(yīng)用程序也需要快速的進(jìn)行發(fā)布。在很多機(jī)器學(xué)習(xí)應(yīng)用的場(chǎng)景中,你需要每天都進(jìn)行模型更新。
機(jī)器學(xué)習(xí)算法的大小也是一個(gè)問(wèn)題。一個(gè)大型的 BERT 模型有 340M 的參數(shù),整個(gè)算法大小約為 1.35GB。即使這個(gè)模型可以在你用戶(hù)的設(shè)備(如手機(jī))上安裝,這個(gè)模型在新的樣本上進(jìn)行推理所花費(fèi)的時(shí)間也有可能使得應(yīng)用程序毫無(wú)用處。舉個(gè)例子:在使用輸入法的時(shí)候,算出建議字符花費(fèi)的時(shí)間比你手動(dòng)輸入的時(shí)間還長(zhǎng),那自動(dòng)完成的模型就一點(diǎn)用都沒(méi)有。
Git 使用了一行一行的比較形式,比較兩個(gè)文本文件的差異,因此它對(duì)傳統(tǒng)軟件程序開(kāi)發(fā)非常友好。然而它并不適用數(shù)據(jù)集以及模型之間的差異比對(duì)。又如 Pandas 能夠很好地進(jìn)行數(shù)據(jù)處理,但是它不支持在 GPU 上運(yùn)行。
CVS 等基于行的數(shù)據(jù)格式,非常適合在數(shù)據(jù)量小應(yīng)用程序中使用。但如果你的應(yīng)用程序有許多功能,并且這些功能只需要使用數(shù)據(jù)中的一個(gè)子集,這種情況下,使用基于行格式的方式仍需要加載所有的數(shù)據(jù)。PARQUET 和 OCR 等列格式的工具,針對(duì)上述的場(chǎng)景進(jìn)行了相應(yīng)的優(yōu)化。
機(jī)器學(xué)習(xí)產(chǎn)品在發(fā)布上也面臨著很多問(wèn)題:
-
監(jiān)控:如何知道你的數(shù)據(jù)分布發(fā)生了變化,你需要重新訓(xùn)練模型?例如:Dessa,Alex Krizhevsky 基于AlexNet 開(kāi)發(fā)的,在 2020 年被 Square 收購(gòu);
-
數(shù)據(jù)標(biāo)簽:如何快速的給新的數(shù)據(jù)打標(biāo),或?qū)⒁呀?jīng)存在的數(shù)據(jù)進(jìn)行重新打標(biāo)來(lái)支持新的模型訓(xùn)練?例如:Snorkel;
-
持續(xù)集成、持續(xù)交付:如何保證你的模型在每一次修改后都能夠按照預(yù)期的進(jìn)行工作,你不可能花費(fèi)好幾天的時(shí)間去等待訓(xùn)練收斂的結(jié)果?例如:Argo;
-
交付:如何打包并發(fā)布你的新模型?例如:OctoML;
-
模型壓縮:如何將你的機(jī)器學(xué)習(xí)模型進(jìn)行壓縮,讓他能夠在客戶(hù)的設(shè)備上運(yùn)行?例如:Xnor.ai 這家公司,由艾倫研究所拆分出來(lái),專(zhuān)注模型壓縮的初創(chuàng)企業(yè),在 2018 年 5 月,估值 6200 萬(wàn)美元,獲得 1460 萬(wàn)美元的融資。在 2020 年 1 月, 蘋(píng)果以 2 億美元收購(gòu)了它,并關(guān)閉了它的網(wǎng)站。
-
推理優(yōu)化:如何提高你的模型推理速度?多步融合?低精度?減小模型可以使推理速度變得更快。例如:TensorRT;
-
邊緣設(shè)備:硬件設(shè)計(jì)讓機(jī)器學(xué)習(xí)算法能夠更快速地運(yùn)行在更廉價(jià)的設(shè)備上。例如:Coral SOM;
-
隱私:如何使用用戶(hù)的數(shù)據(jù)進(jìn)行訓(xùn)練并且保證用戶(hù)的隱私?如何讓你的應(yīng)用程序滿(mǎn)足 GDPR ?例如:PySyft。
我根據(jù)這些機(jī)器學(xué)習(xí)工具主要解決的問(wèn)題繪制了下圖:
工具數(shù)量
這些工具很大一部分都聚焦在數(shù)據(jù)處理上:數(shù)據(jù)管理、標(biāo)記、數(shù)據(jù)查詢(xún)、數(shù)據(jù)處理、數(shù)據(jù)生成等。這些數(shù)據(jù)處理工具旨在構(gòu)建一個(gè)平臺(tái),數(shù)據(jù)處理是項(xiàng)目中資源最密集的階段。如果有人在你的平臺(tái)上,給你提供數(shù)據(jù),你就能很容易為他們提供預(yù)先構(gòu)建的訓(xùn)練模型。
建模和訓(xùn)練模型主要是框架來(lái)實(shí)現(xiàn)的。而深度學(xué)習(xí)框架競(jìng)爭(zhēng)已經(jīng)逐漸趨于冷卻,現(xiàn)主要是 PyTorch 和 TensorFlow 之間的競(jìng)爭(zhēng)。以及一些基于這兩個(gè)框架的更高層次的框架之間的競(jìng)爭(zhēng),它們圍繞這兩個(gè)框架來(lái)處理特定的任務(wù):NLP 與 NLU 以及多模態(tài)問(wèn)題。這些框架都是分布式訓(xùn)練框架。這還有一個(gè)新的框架 JAX,很多討厭 TensorFlow 的 Google 開(kāi)發(fā)者都使用它。
現(xiàn)在有很多獨(dú)立的工具用于一些實(shí)驗(yàn)跟蹤,并且流行的框架中都內(nèi)置有他們自己的實(shí)驗(yàn)跟蹤的功能。超參數(shù)是一個(gè)非常重要的功能,有些人注意到他們也不奇怪,但是他們似乎都沒(méi)有抓住重點(diǎn),超參數(shù)的瓶頸并不是設(shè)置參數(shù),而是高效的計(jì)算能力。
另一個(gè)沒(méi)有被解決的重要問(wèn)題是在部署與服務(wù)上,在這一方面缺乏解決方案的原因在于研究人員與運(yùn)維人員之間缺少溝通。在有能力從事人工智能研究的公司中(通常是大公司),研發(fā)團(tuán)隊(duì)與運(yùn)維團(tuán)隊(duì)幾乎都是分開(kāi)的,兩個(gè)團(tuán)隊(duì)之前的合作只能通過(guò)(產(chǎn)品、項(xiàng)目)經(jīng)理來(lái)實(shí)現(xiàn)。而在小公司中,員工能看到全局,但是他們會(huì)受到產(chǎn)品需求的限制。只有少數(shù)初創(chuàng)公司,這些公司聘請(qǐng)了有經(jīng)驗(yàn)的運(yùn)維工程師和有經(jīng)驗(yàn)的研究人員一起協(xié)同辦公,成功的解決了這一問(wèn)題。并且這些初創(chuàng)公司占據(jù)了人工智能很大一部分市場(chǎng)。
開(kāi)源與開(kāi)放核心
在 202 個(gè)工具中,其中有 109 個(gè)是開(kāi)源軟件(OSS)。即使有些工具不是開(kāi)源的,它們大多數(shù)也會(huì)附帶一些開(kāi)源的工具。
這里有幾個(gè)開(kāi)源軟件的原因:一是所有支持開(kāi)源的人多年來(lái)一直都在說(shuō)的原因,透明、協(xié)作、靈活,但這一個(gè)原因似乎只是一個(gè)道德上的約束。另一個(gè)是,客戶(hù)并不想在看不到源代碼的情況下使用新的工具,因?yàn)樵诳床坏皆创a的情況下,如果這個(gè)工具被關(guān)閉,他們將不得不重寫(xiě)代碼,實(shí)現(xiàn)這個(gè)功能。
開(kāi)源并不意味著不盈利,也不意味著免費(fèi)。開(kāi)源的維護(hù)很費(fèi)時(shí),并且成本也很高。據(jù)說(shuō),TenserFlow 團(tuán)隊(duì)有接近 1000 人。公司不會(huì)在沒(méi)有商業(yè)目標(biāo)的情況下提供開(kāi)源軟件。如果有更多的人使用他們的開(kāi)源工具,就會(huì)有更多的人了解他們,信任他們的技術(shù),并且會(huì)購(gòu)買(mǎi)他們的專(zhuān)有工具,并且也能讓更多的人希望加入他們公司。
Google 通過(guò)推廣 TenserFlow,希望能夠讓更多的人使用他們的云服務(wù)。NVIDIA 維護(hù) cuDF 庫(kù)也是希望有更多的人來(lái)買(mǎi)他們的 GPU。Databricks 免費(fèi)提供 MLflow,但出售他們的數(shù)據(jù)分析平臺(tái)。Netflix 最近成立了專(zhuān)門(mén)的機(jī)器學(xué)習(xí)團(tuán)隊(duì),發(fā)布他們自研的 Metaflow 框架,用以吸引人才。自然語(yǔ)言處理工具 SpaCy 是免費(fèi)的,但是 Prodigy 卻是收費(fèi)的。
開(kāi)源已經(jīng)變成了一種行業(yè)標(biāo)準(zhǔn),創(chuàng)業(yè)公司很難從中找到一種可行的商業(yè)模式。任何一個(gè)剛起步的公司,都必須與現(xiàn)有的開(kāi)源工具進(jìn)行競(jìng)爭(zhēng)。如果你也僅僅只開(kāi)放核心,你需要仔細(xì)思考,哪些特性是要包含在開(kāi)源軟件中,而哪些是要放在付費(fèi)的版本中。既要讓用戶(hù)不覺(jué)得你貪婪,也要能夠讓免費(fèi)用戶(hù)付費(fèi)。
總結(jié)
關(guān)于人工智能的泡沫是否會(huì)破滅,人們也是議論紛紛。現(xiàn)在,人工智能上很大一部分投資都在自動(dòng)駕駛上,但是到現(xiàn)在仍然沒(méi)有一款完全自主駕駛的汽車(chē)出現(xiàn)。一些人認(rèn)為投資者將會(huì)對(duì)人工智能失去希望,Google 也凍結(jié)了在機(jī)器學(xué)習(xí)上的人員招聘,Uber 解雇了一半的人工智能研究團(tuán)隊(duì)。有傳聞?wù)f,學(xué)習(xí)機(jī)器學(xué)習(xí)相關(guān)的人員遠(yuǎn)多于機(jī)器學(xué)習(xí)相關(guān)的工作崗位。
現(xiàn)在是進(jìn)入人工智能領(lǐng)域的好時(shí)機(jī)嗎?我相信,現(xiàn)在是有在炒作人工智能的概念,但在某一個(gè)時(shí)刻,會(huì)冷靜下來(lái)。有可能這個(gè)時(shí)間點(diǎn)已經(jīng)發(fā)生了。我不相信機(jī)器學(xué)習(xí)會(huì)消失,有能力進(jìn)行機(jī)器學(xué)習(xí)研究的公司會(huì)越來(lái)越少,但是絕不會(huì)缺乏將機(jī)器學(xué)習(xí)現(xiàn)有的工具引入產(chǎn)品的公司。
如果必須在人工智能專(zhuān)家和工程師之間做一個(gè)選擇,那么請(qǐng)選擇工程師。對(duì)于工程師來(lái)說(shuō),學(xué)習(xí)人工智能相關(guān)知識(shí)會(huì)很容易,但是對(duì)于人工智能專(zhuān)家來(lái)說(shuō),成為一個(gè)很好的工程師要困難得多。如果你是一個(gè)優(yōu)秀的工程師,并且能夠?yàn)闃?gòu)建人工智能工具而努力,我會(huì)由衷地感謝你。
致謝:感謝 Andrey Kurenkov 在我撰寫(xiě)本文時(shí)所做出的指導(dǎo)。感謝 Luke Metz 的審校。
英文:What I learned from looking at 200 machine learning tools
鏈接:
https://huyenchip.com/2020/06/22/mlops.html
作者:Chip Huyen,計(jì)算機(jī)科學(xué)家,現(xiàn)就職于硅谷的一家人工智能初創(chuàng)公司,專(zhuān)注于機(jī)器學(xué)習(xí)生產(chǎn)流程。
譯者:羅昭成