記得我初學科枝時,雖然亦是由編程開始,但心裏一直最想知的,就是我如何將一個頁面上線,好讓世人能在瀏覽器看到我要傳達的意思;又或這樣說,究竟互聯網上是如何傳遞一個字一個詞到各地的電腦熒幕上,這是我當時科技初心的最大好奇。 只可惜,無論youtube 或書本所教的,都不會先提及這方面,冗長的篇幅,只在教coding ,到尾也居然沒給我這個答案。我心想,即使我學編程學得極有本領又如何,根本傳送不了出去,絕對是閉門造車。 為求這個答案,我走過不少冤枉路,差不多要到學習的半年後,才找到答案,那一刻,我很感動,只因得來不易。 正所謂「己所不欲,勿施於人」,而我則是「己有所欲,猛施於人(正句該是:己欲達而達人^^)」。在這個課程的先修課中,我就先讓大家明白如何將一個網站上線上production,好使大家有明確的學習目標,由大方向出發,逐步理解當中的框架和各細緻的編程。 要上我以上這個收費科技課前,請務必完成以下五節的免費先修課。 2024 科技編程班 —- 先修篇 – RedTechSchool
我的演繹,一個必定令你對編程上癮和見大用的課程。 AI編程初階 逢星期二:8:30-9:30 開課日期:8月13日 共四課: 每課1小時 1) 一切由學習上production 開始 2) 極速掌握HTML、CSS 和Javascript 頁面結構 3) 如何抄code 4) 如何利用AI 極速抄code 學員需自備電腦 學費:$680 四堂 地點:旺角,上課地點視乎報讀人數再作實際安排。 繳付學費方法: 轉數快或Payme : 51935833 過數後請將過數資料和姓名 whatsapp 51935833。
Android 和 iOS 是全球最受歡迎的兩大手機作業系統,二者各有優勢,Android的隱私權一向備受質疑,Apple 的 iOS 在這方面稍好一些,但它是一個「封閉式花園」,使用體驗缺乏靈活性。正因如此,許多人都在期侍更「開放」和更注重「隱私」的作業系統出現,而最近Linux 的手機終於出現較成熟的作業系統——Ubuntu Touch。 Ubuntu Touch 最初由 Canonical 公司所開發,該公司一直支援Ubuntu GNU/Linux 桌上電腦、筆記本電腦和侍服器服務;2017 年這公決司定放棄將其操作系統移植到智能手機和平板電腦的設想,可是,一群獨立開發人員則組成了 UBPorts 團隊,以接替 Canonical 停止的工作。 2018 年,該團隊將基本操作系統從 Ubuntu 15.04 更新到 Ubuntu 16.04 LTS,但 Canonical 已經結束了對該操作系統的維護,因此開發人員在過去幾年一直致力於對 Ubuntu 20.04 的更新。 最近,這團隊終於發布第一個基於 Ubuntu 20.04 LTS “Focal Fossa” 的Ubuntu Touch 穩定版本,可用於少數運行Linux 內核的手機,包括Fairphone 4、Vollaphone、Vollaphone X 和 Vollaphone 22。 由於Android 機採用經改動過的Linux 內核,是故Ubuntu Touch 亦可使用在具有Android 驅動程式的智能手機上,有興趣的使用者可上UBPorts 官網瀏覧以下頁面,看看自己閒置的手機型號是否可支援Ubuntu Touch ,從而一試這個Linux 手機版作業系統。 https://devices.ubuntu-touch.io/ 如何下載這作業系統於可支援的手機上,則可參考以下這條YouTube 短片: 當然,大家會擔心這個Linux 作業系統沒有足夠的應用軟件,Ubuntu Touch 可讓你透過安裝Waydroid藉容器運行某些 Android 的應用軟件,如何安裝Waydroid可瀏以下連結,片中明顯要使用者有一定的操作Linux 經驗,不過,玩得Linux phone,我相信都是programmers嘛。
一直以來,NVIDIA 的GPU 能在市場遙遙領先,是因為其軟體系統CUDA 有豐富的「程式工具庫」,CUDA是 NVIDIA 於 2006 年推出,包含 CUDA 指令集架構(ISA)和 GPU 內部的並行計算引擎,由於CUDA擁有一個成熟且龐大的支持庫和工具生態系統,令程式師在開發上極其方便,且能釋放NVIDIA GPU的最大性能。 而AMD 所用的軟體系統ROCm ,由於起步較晚,其生態圈在成熟度、文檔完善度以及第三方庫的支持方面依然不及CUDA。即使ROCm支持重要的機器學習庫,如TensorFlow和PyTorch,但一旦深入使用,程式工具就遠不如CUDA豐富。 若要ROCm在工具庫趕上CUDA,恐是一件極不容易的事,這亦老黃所自恃。然而,NVIDIA這方面的技術優勢,又再面對另一挑戰。 英國新創公司Spectral Compute ,經歷了七年的硏發,推出工具「SCALE」,是 GPGPU 工具鏈,允許NVIDIA 的CUDA 架構於 AMD 的GPU 執行,讓 AMD 用戶可以NVIDIA 的CUDA 創建高階「混合」模式,這亦代表業界已不斷打破NVIDIA GPU 運算主導地位,研發出各種工具庫降低這企業的壟斷力。 倘若SCALE 普及起來,NVIDIA的CUDA 地位將從專用變成泛用,故此NVIDIA對 SCALE 等平台允許CUDA 於第三方組件執行表示極不滿;當然啦!其自家產品的獨特性將逐漸失去嘛!
我們先以日常所用的desktop 電腦作為例子,加以埋解後,才再談AI 後端平台,你就會明明白白。 你枱上那部電腦,起始就是底板那粒CPU ,它就是這部機器的大腦;然而,你要跟它溝通,基本上還須配備三套關鍵軟件,首先是控制CPU 電路的指令集架構,然後就是跟指令集溝通的作業系統,亦即我們常用的 Microsoft windows 或 Apple Mac OS ,和普遍用於侍服器的Linux 系統,最後就是應用軟件,如 office 、chrome或photoshop 等等。 一個AI 後端平台的結構也差不多是這樣,只是大腦不是CPU ,而是專業於AI 的GPU;同樣地,有它相關的指令集架構、作業系統和應用軟件,只是這些軟件並不像家用電腦般如此標準化和普及化:大家不是用windows,就是用Mac OS ,而是需要程式師計師按實際情況而編寫,甚至一併設計,獨特性較強。 NVIDIA在人工智能之所以如此成功,除了它長期深耕GPU外,更重要的是它提供了可編程的軟件架構。早在2007年,NVIDIA發佈了CUDA編程模型,軟件開發人員可以使用CUDA在英偉達的GPU上進行編程;換言之,NVIDIA 頗像Apple,提供了一個封閉式的作業系統,讓程式師可專事使用它的GPU 硬件。 這跟AMD 所開發的GPU 不同,它是開源的,各社區或企業都可以自行開發相關的應用軟件、作業系統、甚至乎指令集架構、或一併設計,AMD 沒有在這方面加以壟斷。 而Silo AI正正就是開發這些軟件的初創企業。 有了上述概念,我們才會明白AMD 在商業策略上的佈局,蘇媽笑裏藏刀,要比老黃深不可測。
既然NVIDIA 輝哥因專事開發GPU 而收成正果,我地就了解下GPU跟CPU 呢兩隻晶片有咩分別! CPU 就好比一間大企業既高管,佢要有一定的應變策動力,曉得面對外來的多樣化衝擊,呢d問題往往同時出現,咁落到呢位高管嗰腦度,佢又識要判斷事件的緩急先後,然後將最重要既問題處理左先,再逐一解決其他事件。CPU 都係扮演緊呢種「大腦」的功能,先將收到既多樣化外來指令(從RAM 取出來)放在晶片中既「暫存器(Cache)」,「消化」下呢d指定,然後再逐一按緩急輕重將指令傳到計算核心度解決。整個流程執行由晶片中所謂「控制單元」所支配,好比高管腦袋裏的策動力。 咁去到公司較基層既工作,大有可能係較單純的工序,譬如一d標準化既車工,工作性質每日如是,唔使工人用腦應變和策劃,但所要求的產量極多,咁公司就應該搵人專注做呢樣野,叫佢唔駛多心諗處理其他事,集中做死嗰樣野,狂做得啦!你都會覺得,做呢樣既人,腦袋都應該比較簡單,人亦比較單純嘛。GPU 晶片就係咁啦,佢無複雜既「控制單元」同Cache ,但就整合左幾千個,甚至上萬個計算核心,你可以咁諗,即係嗰基層員工安裝多十幾隻機械臂喺佢身上,密做當三番!但用腦判斷既野就極少! 以前,GPU只係分工出泥專門處理影像數據,所謂「顯卡」,譬如打機講求畫質,需專門處理,GPU就大派用場。 但因為GPU 既專門運算,特別適合密碼破解,所以後來比特幣礦機粒晶片都係用GPU,因為所謂「挖礦」,都係一條心透過不斷運算搵個nounce 值出泥,極適合用GPU;至於而家,大家都知啦,GPU亦非常適合巨量資料並行處理(當然要再將粒晶片既結構改動下);所以,人工智能同機器學習的普及,GPU的需求就急增,成就了輝哥! 其實,PU唔只兩隻,運算分工愈泥愈細,乜PU都有,BPU、DPU、EPU……. 真係26個字母都唔夠用。 當然,今期主角係GPU,有排未到ZPU。
這段日子,因為想學寫一些關於科技產品的推介(雖然我知chatGPT可代為效勞,但人工智能寫出泥既缺乏個性,非我所愛),就發覺自己對晶片的知識十分疲弱,於是下工夫研究。 現在,我終於明白一塊晶片怎生成(令我突然很想學chemistry),亦明白到甚麼是處理器的指令集(就是最底層那幾個跟CPU 溝通的指令),又知道處埋器的微架構就是那粒CPU的電路邏輯,加埋指令集就是所謂的CPU核心了(我一直只知Linux 的bash 能跟核心溝通,但甚麼是核心,我不明白),原來不只有CPU和GPU,更有其他字母為首的乜PU ,將CPU 某些處理任務專門化出來,提升效能,更了解到C程式語言在編繹中如何跟二進制程式語言扯上關係。 另一方面,處理器有X86和ARM 之分,很有趣,又是一個屬closed system而另一個則是open system,X86較封閉,以INTEL為首幾間大公司所壟斷,而且CPU 是自家生產;ARM則較開放,授權賣出所設計的指令集甚至微架構,但它本身並不生產CPU,其他生產商代勞,最出名既當然是台積電了! 同一個微架構,亦可以進一步微調一些電路設計以平𧗾效能與功耗(即係食唔食電),以針對不同的使用電腦的目的(如剪片或打機),所以我們會看到筆電有很多型號的處理器,甚麽i7乜乜乜乜,Ryzen 乜乜乜乜等等。 這些東西,我終於有感了,這重要,是我跟人工智能最大的分別;我有感,我的文字才生動—-唯一的本錢勝過chatGPT!