.NET 框架是由微軟開發,致力於敏捷軟體開發、快速應用開發、具平臺無關性和網路透明化的軟體框架,目前全球有 620 萬開發者在使用 .NET 開發程式。然而,開發者在學習、開發和應用 AI 時,會發現市面上少有基於 .NET 的 AI 開發類庫、人工智慧應用技術平臺和商業支援服務。在這樣的背景下,SciSharp AI 開源社群應運而生,它打造一個基於 .NET 的機器學習生態,推出並開源了多個頗受歡迎的基於 .NET 的機器學習專案和工具,比如 TensorFlow.NET 就被谷歌列入 TensorFlow 官網,推薦給全球開發者。
SciSharp 是怎樣的一個社群?它是如何構建一個基於 .NET 的機器學習生態?它在做的事情對開發者來說有何意義?本次,AI 科技大本營與 SciSharp 核心團隊成員,包括 SciSharp 社群產品運營負責人,原 “微信”技術專利發明人George Zhao、 TensorFlow.NET 發起人和主要貢獻者Eric Chen、NumSharp 主要貢獻者 Eli Belash、Torch.NET與Numpy.NET的主要貢獻者Meinrad Recheis和 ICSharpCore主要貢獻者Kerry Jiang聊了聊,更加深入地瞭解這個 AI 社群及其產品。
SciSharp為開發者做什麼?
SciSharp 是一個非盈利人工智慧開源社群,目前核心開發者有 5 人,他們分別來自以色列、奧地利、澳大利亞、美國和中國,其他 35 名貢獻者則來自德國、印度等 15 個國家和地區。目前,整個社群主要是靠成員各自的興趣驅動,管理也是由團隊人員自發共同承擔,是一個完全透明和自治的開源技術社群。
眾所周知,C# 和 JAVA 是目前企業系統裡最流行的兩大程式語言,現在,Java 機器學習生態裡已經有不少社群和團隊在做相關產品和服務,如史丹佛的 CoreNLP、DL4J 的機器學習庫等,並且做得都不錯。唯獨在 .NET 領域,優秀的產品非常缺乏,而且,雖然有 Accord.NET、Deedle、ML.NET 和其它一些零散的庫可供開發者使用,但是它們存在著明顯的缺陷,造成目前的開源庫無法持續發展和創新,陷入僵局。在深度學習領域,更是 Python “獨霸天下”的局面,讓人以為做機器學習,就必須用 Python,做大資料就必須用 Scala或Java。這讓很多 .NET 開發者感到很不便,因此,SciSharp 就開始試著手建立一個基於.NET(以 C# 開發語言為主)的機器學習生態社群。
NumSharp 的主要貢獻者,來自以色列的工程師Eli Belash 回顧了他剛開始從事機器學習和人工智慧開發時的感受:“我瞭解到 .NET 多年來缺乏可以與 Python 相匹敵的語言功能。微軟的 ML.NET 仍處於早期階段,微軟的 CNTK(圖形計算庫)剛剛中斷。那時,你無法用 C#語言編寫 ML(機器學習)演算法,而用其他語言,如 Python 或 R 做這些事非常容易。因此,我們缺乏基於.NET 的可靠的解決方案來編寫機器學習演算法。當機器學習成為趨勢時,C# 目前落後於 Python 和 Java。”
在這種背景下,SciSharp 社群成立了,目的主要是為了讓 .NET 開發者在當前火熱的 AI 熱潮中能夠使用最新的 AI 技術,而不用花很長的時間學習和使用 Python 機器學習生態裡的工具,降低 .NET 開發者入門機器學習的門檻,讓他們能快速把 AI 能力無縫融入到現有的生產系統裡。
打造基於.NET的機器學習生態
SciSharp 的核心理念是:打造一個基於 .NET 的機器學習生態,提供一個和 Python 生態體驗一致的工具庫,讓模型遷移更容易、學習曲線最低。為了達到這個目的,SciSharp 從最基本的張量計算庫 NumSharp 開始構建,到 TensorFlow Binding,再到吸納其它深度學習庫 SiaNet, 做 ArrayFire.NET,最後到開發ICSharpCore以支援Jupyter Notebook除錯。團隊的心願一致,本著以精衛填海的精神,儘可能把 .NET 機器學習生態進一步完善。
NumSharp 的主要貢獻者Eli Belash 表示,目前,Python 是 ML 開發和研究的主要語言。在閱讀機器學習相關的論文時,你會發現作者很可能會使用 Tensorflow、Pytorch 和/或Numpy 等庫並用 Python 語言程式設計來實現。在這樣的情況下,重新造輪子可能並不是聰明的做法。如果現在流行的 Python 庫執行良好,我們沒理由去思考別的方法。
這就是為什麼 SciSharp 決定遷移 ML 最流行的 Python 庫:
Numpy 的.NET版NumSharp
TensorFlow 的.NET 移植版TensorFlow.NET
與Pandas 對應的Pandas.NET
上面提到的 3 個庫提供了從頭開始編寫 ML 演算法的完整解決方案,SciSharp 的重點之一便是能夠相容用 Python 編寫類庫的所有機器學習演算法,並儘可能無縫地在 5 分鐘內將其遷移到 C#。C# 是微軟公司釋出的一種物件導向的、執行於 .NET Framework 之上的高階程式設計語言。隨著.NET Core 3.0 的即將釋出,這個最初釋出於 2016 年的平臺終於有了最新的主版本,該平臺具有通用性、模組化、跨平臺和開放原始碼的特性。這樣,除了 Python 和 Java,開發者同樣可以使用 C#完成機器學習任務。
最受歡迎的專案
TensorFlow.NET
SciSharp 上現已有幾十個基於 .NET 的專案供開發者使用,從 star 數和 fork 上來看,最受歡迎的當屬 TensorFlow.NET(簡稱TF.NET) 和 NumSharp。
其中,TensorFlow.NET 近期被谷歌列入 TensorFlow 官網推薦給全球開發者,並被微軟的 ML.NET 1.3.1 整合,作為ML.NET裡深度學習部分的重要元件,目前已經完成了用遷移學習演算法進行影像分類的功能,並計劃在年底完成影像物件檢測的功能,屆時將會對全球開發者公佈。
————————————————