今天要來分享一下實際進行 AI 專案時可能會需要的工具或可能聽到的專有名詞。前半和整個專案運作比較有關係,後半則介紹工程師用的開發工具。
AI 的發展非常快速,往往沒有幾年又有新的技術,與時俱進可以幫助我們少走很多冤枉路。本系列文的參考論文多出自於此平台,感謝這些學者公開分享自己的研究,才能讓 AI 這塊領域的技術發展如此地迅速。
可以搜尋學術文獻的免費搜索引擎。如同首頁的標題所寫:「站在巨人的肩膀上。」
推薦在 Linux 系統下運作 AI 模型,像是 ubuntu 。因為在 Windows 上的話,很多好用的網路資源及程式套件會不能使用或無法安裝,但是客戶要在哪個環境運用 AI 有時候不是我們可以決定的,只能說可以選擇的話盡量使用 Linux 系統。
前面提到可以使用第三方雲端服務,那麼我們有需要使用第三方的雲端服務嗎?
雲端服務
付費使用第三方提供的硬體設備如伺服器,網路頻寬,計算能力等等,或是使用對方的預訓練模型等服務。將資料和程式放在第三方的硬體上享受對方提供的資源和管理。
常見的三大雲端供應商有 Amazaon 的 Web Service (AWS),Google 的 Clound Platform(GCP),和 Microsoft Azure。
本地
硬體設備放在公司內部(辨公室,工廠等)。
兩者的差異:
項目 | 雲端服務 | 本地 |
---|---|---|
硬體成本 | 低 | 高 |
維護成本 | 低 | 高 |
使用成本 | 高 | 低 |
安全隱私 | 低 | 高 |
端看怎麼取捨,不想要購買硬體和請 IT人員維護,又或是想要使用對方的預訓練模型就用第三方的雲端服務。而想要高機密性和安全性就自己購入硬體和請 IT 人員維護。
資料庫是將資料儲存在一起,可以快速搜索資料的工具。如果都是結構式資料會建議用傳統的關聯式資料庫,有成本上的考量可以用 MySQL 的免費版本 MariaDB。而非結構式資料,或是表格資料的格式非常不固定可以使用 NoSQL 資料庫像是 MangoDB。
當然也可以考慮雲端服務的資料庫(像是 Amazon 的 AWS),不過除了要考慮資料的保密性之外,隨著資料逐漸變多,流量費用也是蠻驚人的。
關聯式資料庫 | NoSQL 資料庫 |
---|---|
MariaDB | MangoDB |
如果沒有使用雲端服務,又是個人開發的話,電腦有沒有能加速的 GPU,訓練速度差別會蠻大的。
補充新知:2022/10/5 也就是前幾天 DeepMind 在自然(Nature)期刊發表了 Alpha Tensor 的文章,介紹了可以加速計算矩陣乘法的新演算法。
類別 | 名稱 | 說明 |
---|---|---|
程式語言 | Python | AI 開發最佳選擇,要注意和其他語言相比,執行速度慢的問題 |
開發環境 | Visual Studio Code | 方便撰寫,眾多好用的延伸模組 |
程式庫 | Scikit-learn | 機器學習框架 |
程式庫 | Tensorflow | 早期的深度學習框架,業界使用率高(配合客戶使用) |
程式庫 | Pytorch | 後來的深度學習框架,學術界使用率高(個人愛用) |
程式庫 | Numpy | 處理數學陣列和矩陣 |
程式庫 | Pandas | 用來操作數據和資料清理 |
程式庫 | Matplotlib | 圖形可視化 |
程式庫 | Seaborn | 基於 Matplotlib 的高級圖形可視化 |
程式庫 | venv | 虛擬環境,新專案起手式 |
程式庫 | Openai | 可以使用 OpenAI 的 API,需申請金鑰 |
程式庫 | OpenCV | 電腦視覺框架,各種好用函式 |
程式庫 | HugginFace | Transformer 框架,快速開發 |
程式庫 | Django | Python的網頁後端框架,自帶後台管理 |
程式庫 | Flask | Python的網頁後端框架,輕量級適合小型 App 開發 |
Css/Html | Bootstrap | 網頁前端框架,方便設計 RWD(Optional,配合前端設計) |
Javascript | HighCharts | 網頁圖形可視化,商用雲端部署可買斷,邊緣端部署需買 OEM |
Javascript | Plotly | 網頁圖形可視化,商用免費 |
版本管理 | Svn | 早期知名的程式碼版本管理軟體(配合客戶使用) |
版本管理 | Git | 程式碼版本管理軟體(個人愛用),不公開的程式碼可以自架伺服器 |
虛擬容器 | Docker | 多人測試,統一環境版本做部署的好工具,注意 Desktop版 250 人以上公司需付費 |
分享開放原始碼(Open source)的平台,許多大神寫好的原始碼直接公開讓我們當範例參考,可以透過關鍵字搜尋想要的專案,進而使用或修改別人寫好的程式,站在巨人的肩膀上更快達成目的!但相對地如果我們看不懂別人寫的程式,發生預料之外的問題時會很難找出並修正該問題。
GitHub 和 GitLab 兩個都是使用 Git 這個程式碼版本管理工具,差別在
GitHub
出現比較早,開放原始碼較多,有很多大型專案的原始碼。
使用公開儲存庫免費(別人看得到你的原始碼),但是想要使用私人儲存庫讓別人看不到就需要付費。
GitLab
出現比較晚,開放原始碼較少,相對地可以免費使用私人儲存庫,但是有空間限制。
GitHub | GitLab |
---|---|
ーー 上述所有圖片的出處為各官方網站。