透過Ollama在本機電腦執行大型語言模型(LLM):樹莓派與Linux篇

本文的Raspberry Pi 5以及相關組件皆由台灣樹莓派Sosorry贊助提供,特此感謝!

樹莓派5及相關零組件

上圖包含:

  • Raspberry Pi 27W USB-C電源供應器,以5V/5A供電給樹莓派5,也支援標準PD模式:5V/3A, 9V/3A, 12V/2.25A和15V/1.8A。
  • Raspberry Pi Case,樹莓派官方外殼。
  • Raspberry Pi Active Cooler:樹莓派5專用主動式散熱器。
  • Raspberry Pi Debug Probe:用於連接ARM微控器的開發板,透過Serial Wire Debug(序列線除錯,簡稱SWD)介面進行除錯,例如:Raspberry Pi Pico, Arduino UNO R4, Arduino Nano 33 BLE, STM32開發板…等。
  • Raspberry Pi 5主板,4GB主記憶體。
  • RTC時鐘鋰電池
  • RICELEE microSD 64GB:樹莓派原廠認證記憶卡,預載Raspberry Pi OS版,讀100MB/s;寫50MB/s。

Raspberry Pi 5簡介

Raspberry Pi 5(以下稱樹莓派或RPi 5)是樹莓派基金會於2023年10月推出,約信用卡大小的單板64位元微電腦,台灣因為通訊設備審核作業,推遲到2024年4月1日上市。根據樹莓派RPi 5產品官網的描述,RPi 5 配備了Broadcom BCM2712四核Arm Cortex A76 處理器,時脈達到 2.4GHz,比上一代快了3倍,其他特色包括:配備PCI Express(PCIe介面)、雙4Kp60 HDMI輸出並支援HDR、搭載樹莓派基金會自研RP1 I/O控制器,內建RTC即時鐘以及PoE接腳。

Raspberry Pi 5主板

PoE(Power over Ethernet,簡稱PoE)代表透過乙太網路傳輸電力給裝置,也就是說,只要配合適當的網路設備,RPi 5就能在連接乙太網路的同時取得電源,不用額外插電。

RPi 5主板有預留主動式散熱風扇所需的安裝孔,以及風扇的電源和PWM調速插座,鋁質散熱片正面有樹莓派的logo,質感很好;安裝過程不需要任何工具。

Raspberry Pi 5主動式散熱器

這是樹莓派官方的PRi 5外殼,裡面有可拆卸的風扇,一個小散熱鋁片和四個止滑,不知為何不附帶螺絲。

Raspberry Pi 5外殼

就連RTC即時鐘電池這種小零件,樹莓派官方也做得頗有質感,有附帶跟電池同尺寸的圓形雙面膠,我把它黏在外殼頂蓋。頂蓋闔上之後,跟本體之間約有1mm高的通風縫隙。

Raspberry Pi 5 RTC

這是樹莓派官方RPi 5 USB-C電源和主機的尺寸對比,電源頂部有樹莓派的logo。

Raspberry Pi 5電源

Raspberry Pi 5的特點

已經有許多前輩分享RPi 5的開箱和評測文,以下內容摘譯自Jeff Geerling先生的“Testing PCIe on the Raspberry Pi 5”(在樹莓派5上測試PCIe)貼文

RPi 5的尺寸跟前幾代相同,但塞入了更多功能,包括電源按鍵、單獨的UART序列埠連接器、一個4針風扇連接器、一個PCI Express FPC(軟性印刷電路板)連接器、兩個CSI/DSI兩用(可接攝影鏡頭或顯示器)FPC連接器。

RP1晶片取代之前的VL805 USB 3.0控制器,此RP1扮演類似PC主機板上的「南橋晶片」的角色,從BCM2712系統單晶片(SoC)接收4個PCIe通道,將它們分配給所有介面,分攤CPU處理I/O匯流排和周邊裝置通訊的工作。

歸功於四個獨立的USB匯流排(USB 3.0和USB 2.0各兩個),整體USB頻寬翻了一倍;USB 3 .0傳輸速率為5 Gb/s。

舊有兩個 ACT / STATUS LED,用一個紅、綠可變色的狀態LED燈取代。移除AV(類比式影音)插座,用兩個焊接點取代類比視訊輸出。升級電源IC,支援5V/5A的25W USB-C電源輸入。

Pi 5在各個方面都比Pi 4快2~3倍,根據Jeff的測試:

  • 在各項benchmark(性能測試)中,CPU和系統的性能都比Pi 4快1.8~2.4倍。
  • 新的SoC晶片內建ARM的Cryptography Extension(加密延伸模組),因此與加密相關的功能,速度提高了45倍。
  • LPDDR4X記憶體的時脈是Pi 4的LPDDR4的兩倍,存取速率提升2~4倍。
  • HDMI可穩定輸出4K @ 60 Hz不卡頓,而Pi 4有時在30 Hz也會卡頓。
  • microSD卡插槽支援UHS-I(SDR104),資料傳輸率可達104 MB/s。
  • Wi-Fi同樣支援802.11ac標準(Wi-Fi 5),但5 GHz 802.11c的網速測試可達200 Mbps,Pi 4則是104 Mbps。

Jeff的“Forcing PCI Express Gen 3.0 speeds on the Pi 5”(強制Pi 5上的PCIe Gen 3.0速度)這篇貼文提到,Gen 2.0是RPi 5可通過PCI Express認證的速度,每個通道(lane)的速率為5 GT/s,由於RPi 5的PCIe外部周邊透過扁平的FPC(軟式電路板)連接,採用Gen 3.0速度(8 GT/s)連線時,FPC的Insertion Loss(插入損耗)會導致訊號大幅衰減,進而影響傳輸頻寬。

他用PCIe Gen 3.0連接Google Coral TPU(類神經網路加速單元)時,經常遇到連線錯誤,但連接網路卡和SSD硬碟可大幅提升存取速度:

  • 10G ASUS有線網路卡:網速從3.5Gbps提升至6 Gbps。
  • Kioxa XG8 NVMe SSD:從Gen 2.0的450 MB/s,提升至900 MB/s。

讓Pi 5採用PCIe Gen 3.0速度的辦法是在“/boot/firmware/config.txt”設置檔,加入底下的敘述:

dtparam=pciex1
dtparam=pciex1_gen=3

在Raspberry Pi 5安裝Ollama和語言模型

在Linux系統上安裝Ollama的辦法是在終端機執行Ollama官網提供的命令:

curl -fsSL https://ollama.com/install.sh  | sh

這是在Raspberry Pi OS的終端機的執行結果,其中一行訊息指出,因偵測不到NVIDIA或AMD GPU,Ollama將以「僅CPU」模式運作

在Raspberry Pi 5安裝Ollama

我手邊的RPi 5主記憶體為4GB,只能執行「小型」語言模型。我在終端機輸入底下的命令安裝TinyLlama

ollama run tinyllama

這個語言模型的檔案大小僅638MB,初次執行時可能需要等待2~7秒才有回應。

ollama run tinyllama

另外,我也輸入底下的命令安裝3b版StarCoder2

ollama run starcoder2:3b

這個模型佔1.7GB磁碟空間。

ollama run starcoder2:3b

用中文請它編寫一個消除開關彈跳雜訊,以及切換LED燈光開關的Arduino程式試試,結果答非所問:

編寫Arduino程式

同樣的問題,改用英文詢問,答案雖不正確,但比較接近。從它回覆的內文夾雜的“username_1”(使用者名稱_1)和”Upvote”(按讚)關鍵字,我們可猜測,StarCoder模型會用問題的關鍵字來搜尋相關答案,所以它回答的程式碼是現成的版本,而不是依照我的要求編寫,例如:開關接在第3腳、LED接13腳,而它回答的程式之一是開關接在腳9,LED接在腳6,連改都懶得改。

編寫Arduino程式

此外,相較於上一個TinyLlama模型,StarCoder的模型比較大,若連續跟它對談,每次可能要都等1~2分鐘。

這是在另一個終端機執行top命令,觀察系統資源的使用情況,從中可看到在回答問題的過程,處理器的4個核心幾乎處於滿載狀態(386.4%)。

top命令

在Windows的Linux子系統安裝Ollama

我也嘗試在適用於Linux的Windows子系統(Windows Subsystem for Linux,簡稱WSL)安裝Ollama,關於WSL的說明請參閱微軟官方的「如何使用 WSL 在 Windows 上安裝 Linux」貼文。此外,根據“Enable NVIDIA CUDA on WSL”(在WSL上啟用NVIDIA CUDA)的文章指出,請確認你的Nvidia顯卡驅動程式已更新到最新版,而且要安裝基於glibc的Linux發行版,例如Ubuntu或Debian。

底下是在WSL的Debian系統執行Ollama安裝命令的結果,其中可看到“NVIDIA GPU installed”(N卡GPU已安裝)的訊息。

在Windows的Linux子系統安裝Ollama

執行Ollama安裝Meta提供的Llama 3語言模型

安裝Meta提供的Llama 3語言模型

跟它對話試試:

跟Llama 3對話

Posts created 473

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top