學習AI的第一步

2024/02/16閱讀時間約 13 分鐘

AI是否為一種生命形態的呈現?以目前我們看到公開發表的TensorFlow及Pytorch的表現來說, 可能還沒到達能夠稱之為生命形態的地步。但我們在使用ChatGPT時,是否會覺得電腦背後藏了個人在幫你整理由Google、像「微軟Bing聊天」這些搜索引擎找到的文章內容並寫出一篇符合你期待的文章供你閱讀?是否讓你以為有人專門為你的搜尋寫了篇文章方便你閱讀?

又或者在和蘋果Siri對話時,是否感覺就像是在和真人對話般的自然?

三星最近推出的Galaxy S24系列手機,號稱具備AI能力,提供即時翻譯的功能。也就是說,可以和外國人通話無礙。星際爭霸戰(Star Trek)企業號裏人手一機的星際翻譯機,似乎出現雛型了。

在沒有公開的企業私領域中有多少企業秘密在投入AI的發展?這個問題,耐人尋味。企業為了競爭搶先市場推出創新產品,對新產品的研發都是以最高機密來對待。但,AI為大勢所趨,每家公司的研發部門多少因應趨勢及公司產品策略來企劃出新的產品,例如AI PC的出現也就是在這個遊戲規則下的產品,由於AI運算的基礎是張量,TensorFlow還定義了完整的張量理器規格,如果,今天不是TensorFlow而是PyTorch獨領風騷,或許我們今天看到的AI處理單元就不是TPU(Tensor Processor Unit)而是另外一個新名詞了,或許叫π處理單元(Py Processor Unit, PPU)了。笑~~

總之,企業為了維持市場競爭力,有可能自行研發AI核心智能,如TensorFlow或PyTorch之類的系統,但基於機密原則沒有公開問世,可預見的將來,IBM、西門子這些頂尖的電子公司隨著新產品的推出,也會宣佈自己的AI核心智能產品,但目前我們只能繼續推測,也或許,最終沒搭上這波AI浪潮而前浪死在砂灘上也說不定。

但對財力、研發能力有限的中小企業,採用開源的TensorFlow或PyTorch,是進入AI市場的最佳成本選擇,AI的學習成本及曲線,則是各企業競爭力強弱的表現。亦即,開源的TensorFlow及PyTorch讓各個有意角逐AI市場的企業有了共同的起跑線,差別在於,有些企業的研發能力比較好,比較快達成階段性任務的目標。

由Google搜尋,我們可以找到很多具備AI特色的軟體產品,有興趣的讀可以看看這篇文章的介紹「2023 AI 工具大集合 —— 50+ 個人工智慧軟體應用整理」。文章中介紹的軟體工具有多少是以TensorFlow或PyTorch為基礎開發,文中並沒有討論到,但我們可以推測或多或少都有用到TensorFlow或PyTorch提供的軟體庫來做為API。

談到這裏,我們就討論TenorFlow或PyTorch的技術相關議題繼續下去,我寫這系列AI文章的目的有二,自我學習AI的記錄文,並做為初學AI技術IT工作者的引導文。

一開始,我的問題是,TensorFlow或PyTorch那一個平台比較適合初學者接觸,做為卅多年IT工作者,AI技術對我而言,還是一片新領域,新的技術專門用語,新的程式語言(Python),對於用慣了SQL/C#程式語言技術的我來說,Python確實有些不容易理解,就如同JavaScript一般。或許熟悉JavaScript非程序性程式語言的工作者來說,Python相對容易學習理解。

在看過TensorFlow及PyTorch的官網後,我決定從TensorFlow來開始,TensorFlow官網的技術文件,中文文件也比較完整,PyTorch官網踓然有中文資源,但那是大陸翻譯的簡體中文資料庫,充滿了大陸的技術用語,之前廣告充斥,像是五八同城的官網那樣五花八門,看了令人煩惱。另一個原因是,我打算轉入Linux環境來練習AI,Windows雖然好,但在Python虛擬環境的支援上,Linux會比Windows簡單一些。TensorFlow在Ubuntu的安裝簡單也容易使用。

我使用的電腦配備如下:

  • Intel Core i5-11400 CPU,還沒有用AI PC
  • Nivida GeForce GTX1650 顯示卡
  • 32GB RAM
  • 十銓 1TB M.2 PCIe SSD

然後,我裝了Ubuntu 20.04.01版本,就用預設的安裝過程,把整顆SSD都給Ubuntu使用了。就這樣,沒有特別做什麼安排。

接著參考TensorFlow官網的「使用 pip 安裝 TensorFlow」的說明安裝TensorFlow,pip是Python環境下的軟體包管理套件,熟悉Linux作業系統的讀者會知道RPM、fpkg、apt等等,有使用node.js開發與管理網站的都會npm,那麼Python為何又要推一套pip?pip是以Python編寫的軟體包管理工具,其目的也就是成為Python虛擬環境下的軟體包管理工具,Python為了能夠良好管理開發環境,發展出Python虛擬環境這個技術,我們想像一下,軟體開發人員為了開發專案的需要,可能會為每個開發專案建構獨特的開發環境,各個專案使用了不同版本的開發套件,如果這些開發套件都安裝在同一個環境中,就有可能會混淆、互相干擾,導致開發環境的不穩定,為了避免開發環境中不同版本的開發套件的互相干擾,Python採用了虛擬環境的概念來區隔不同軟體專案,每個專案有自己的開發環境而且互不干擾。

這個Python虛擬環境在引用TensorFlow的軟體庫的開發專案中,非常重要。

現在TensorFlow的最新版本是2.15.0,由於TensorFlow是個還在發展中的軟體庫,可以預見未來還會有更多新的版本出現,新版的TensorFlow可能會更新了軟體庫的叫用方式,此時,如果更新到新版本,可能導致開發中的專案發生版本不相容的錯誤,對專案的開發產生負面影響。藉用Python的虛擬環境,可以隔離不同版本的TensorFlow,這樣我們專案開發也可以不會因為新版的TensorFlow導入而發生開發流程中斷或暫停的情況。

Python的虛擬環境,基本上是一個公用的Python開發環境,然後套用在不同資料夾中的虛擬環境檔案來運作,我們可以這麼想,你知道阿湯哥的【不可能的任務】系列電影吧?阿湯哥出任務,需要製作人皮面具,然後戴上人皮面具就能偽裝成某位關鍵人物執行任務。虛擬環境資料夾就相當於人皮面具,賦予Python不同的面貎以執行指定的任務,至荩面具長什麼樣子,就看開發專案的要求了。

談到這裏,我們可以回到TensorFlow的安裝,繼續談下去了。

A最新版本的TensorFlow是2.15.0,也就所謂TensorFlow 2,如果專案需要,想安裝TensorFlow 1也是可以的,只要在安裝過程加以指定就可以了。另外要注意的是由於TensorFlow架構的因素,會需要考慮CPU、GPU的支援,所以會有支援CPU版本、支援GPU版本等的安裝選項,如果是AI PC,TensorFlow是否會自動啟用支援TPU,這一點我認為由於具備TPU的處理器還是新的硬體技術,按照以往半年到一年的準備期,軟體開發才會趕上硬體的歷程看來,今年(2024)就會有專門為Intel Core Ultra、AMD Ryzen 7 7840這些具有TPU的處理器優化的TensorFlow版本出現,但我也認為或許TensorFlow本身就己經有針對TPU優化了,只要硬體到位就自動啟用TPU優化的功能也說不定。

雖然TensorFlow分為支援CPU、GPU的版本,但是基本上,那是很底層的東西,對我們初學者來說,還沒有進階到需要計較運算能力的地步,所以我只要安裝一般CPU的版本就可以了,等到那天我需要更強的運算能力時,再來看是否安裝支援GPU的TensoFlow版本還來得及。

此外,在談到Python時,一般都會談到Anaconda,Anaconda是一個Python和R語言的發行版本,和pip似乎是一樣的工具,Google到很多文章談到Anaconda(Conda)和pip的競爭關係,由於我是初學Python,談這兩者那個比較好,對我來說是沒有意義的,簡單來說,你可以用pip來進行TensorFlow的安裝學習,也可以用Anaconda來安裝學習,看你怎麼選擇了。

就簡單好用這個目的而言,我選用pip。別跟我戰Anaconda更好什麼的,鍾鼎山林,人各有志,自己覺得可以用就行了。但是,如果是在Windows環境下使用與學習TensorFlow,我會建議使用Anaconda,用pip也行,只是在Windows環境下,Anaconda會比pip更友善些。Ubuntu 20.04安裝時,Python 3.8.10就己經安裝好了,所以用pip就相對容易些。

安裝TensorFlow需要

  • Python 3.6-3.9
  • pip 19.0 以上版本 (需要 manylinux2010 支援)
  • Ubuntu 16.04 以上版本 (64 位元)
  • Windows 7 以上版本 (64 位元)

因為我己經安裝了Ubuntu 20.04的環境,檢查相關軟體的版本,如下圖:

raw-image

所以我只要安裝pip3 19以上版本即可。使用以下指令:

sudo apt update
sudo apt install python3-dev python3-pip python3-venv

因為己經有Python 3.8.10安裝,所以實際執行上述指令的結果是安裝了pip及Python虛擬環境venv的軟體套件,安裝Python虛擬環境軟體套件的理由己在前文討論,就不再賛敍了。

指令執行過程中下載套件及安裝的過程就不貼圖了,我只貼上安裝完成後的版本檢查結果:

raw-image

可以看到pip也有了版本編號是20,符合TensorFlow的需求。

接下來,我們開始建立Python虛擬環境、執行虛擬環境及安裝TensorFlow,我們先執行以下指令建立Python虛擬環境,請注意【./T800】這個資料夾名稱是可以自行修訂為自己覺得有意義的字串:

python3 -m venv --system-site-packages ./T800

上述指令執行完畢後,會在目前資料夾下生成T800這個資料夾,如下圖,T800資料夾的內容我也一併貼出來參考:

raw-image

虛擬環境建好了以後,執行以下指令啟動虛擬環境及在虛擬環境安裝TensorFlow:

source ./T800/bin/activate  #這是Bash、sh、zsh啟動虛擬環境的指令,其他Shell請參考文件

pip install --upgrade pip #更新pip,安裝套件前先更新是好習慣
pip install --upgrade tensorflow #安裝TensorFlow,這樣會安裝最新版本的TensorFlow

安裝完成後,我們執行以下指令確認TensorFlow安裝完成了。

python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

以上指令執行如下圖:

raw-image

安裝過程跑很快,比較需要注意的是驗證安裝的執行結果:

tf.Tensor(-419.4875, shape=(). dtype=Float32)

這是張量運算的結果,表示TensorFlow安裝成功並且能夠正常運作。至於驗證指令代表什麼意思,以及驗證結果又是什麼意義,各位可以Google一下來瞭解,我在下一篇文章會解釋。

其實現在TensorFlow主要還是使用CPU或GPU來摸擬TPU運算,因此會需要安裝技支援CPU或支援GPU的TensorFlow版本,TensorFlow把張量運算拆解成CPU或GPU可以處理的單元,CPU或GPU處理完成後,再重組回張量的結果。所以,可以理解的是,如果直接用具有TPU的處理器來運算,TensorFlow不需轉譯張量給CPU或GPU運算,在效能上會比較好,這是一定的。但,TensorFlow是否己針對TPU優化了,也是必需關注的細節。

談到這裏,也該收尾了。

隨著TensorFlow或PyTorch漸漸流行成為IT工作者關注的重心及學習的中心,AI似乎迎來覺醒的春天,推陳出新的AI應用(現在以圖像處理及影音應用為大宗)吹響了下一波IT革命的號角,然而身為IT工作者的你是否能在這波命中佔有一席之地,就看你能不能抓住學習TensorFlow或PyTorch的潮流,逆流而上。

學習TensorFlow需要良好的Python程式語言素養,你可以到【Google Colab】網站度學習Python編程。而學習TensorFlow最好的資源則是在【TensorFlow官網】,希望這些資源有助於各位學習AI。

場論是物理學名詞,統一場論、量子場論、古典場論,意思是在一個物理場範圍內影響物質運動的方式。ERP系統探討的是企業資管理的議題,我們可以把企業看做是一個力場範圍,ERP系統的導入會對企業產生什麼樣的影響,以及將企業的發展帶到什麼樣的方向上去,是我在這系列想探討的。
留言0
查看全部
發表第一個留言支持創作者!