AMD GPU 與深度學習:實用教學指南

AMD GPU 與深度學習:實用教學指南

過去經常聽說 AMD GPU 用於執行深度學習相關軟體非常麻煩,建議有深度學習需求的使用者購買 Nvidia 顯卡。然而,最近 LLM(大型語言模型)很熱門,許多研究單位釋出了基於 LLaMA 的模型,讓我覺得有趣並想測試。我手邊有較多 VRAM 的顯示卡都是 AMD 的,因此決定嘗試使用這些顯示卡來執行。 測試環境 目前測試的環境是利用 VM 再進行顯卡 passthrough,環境如下: CPU: 16 core AMD Eypc 7302P RAM: 96GB DDR4 ECC 2933 GPU: AMD Instinct MI25 (WX9100 BIOS) OS: Ubuntu 20.04 Host OS: PVE 7.4-3 ROCm 4.5.2 其中 ROCm 是 AMD 開發的用於執行深度學習相關應用的開源平台,其中包括 CUDA 轉換層的 HIP。 系統設定 ROCm 安裝步驟 […]

Kubernetes Cluster-API 介紹

Kubernetes Cluster-API 介紹

Kubernetes 在雲原生世界發展這麼多年,也發展出了很多管理其集群生命週期的相關專案,如 kops, Rancher 等。而 VMware 則發起了一個名為 Cluster-API 的專案來利用 Kubernetes 本身的功能管理其他 Kubernetes 集群。本篇文章將會來簡單介紹 Cluster-API 這個專案。 Cluster-API 是什麼? Cluster API 是 Kubernetes 的子項目,專注於提供聲明式 API 和工具,以簡化多個 Kubernetes 集群的供應、升級和操作。 該專案由 Kubernetes Special Interest Group (SIG) Cluster Lifecycle 發起,使用 Kubernetes 風格的 API 和模式自動化平台運營商的集群生命週期管理。包含部署集群所需要的基礎設施,如虛擬機器、網絡、負載均衡器和虛擬網路等,以及 Kubernetes 集群設定都是和部署應用程式在 Kubernetes 上相似的模式進行設定管理。這使得在各種不同基礎設施環境中能夠實現一致和可重複的集群部署。 簡單來說,Cluster-API 會透過一些不同的 Custom Resource Definitions,來定義一個 Kubernetes cluster,並由相對應的元件去讀取這些定義並部署和管理其對應的集群。 目標: 利用使用聲明性 API 管理 Kubernetes […]

透過 Ingress Nginx 公開 TCP/UDP 服務

Auto Draft

Ingress Nginx 在 Kubernetes 中常被利用來提供網頁服務的反向代理和 load balancing。在一些狀況下,你可能會需要同一個 IP 也能夠提供其他 TCP/UDP 服務。這篇文章將會介紹在這種狀況下如何透過 Ingress Nginx 來作為 TCP/UDP 服務的 proxy。 用途 在大部分狀況下,Ingress Nginx 只會用來提供 HTTP/HTTPS 的反向代理和 load balancing,但是在架設 GitLab、Gitea 等服務時,除了 HTTP/HTTPS 外,也會需要 SSH port 提供 git 連結。在這種狀況下,又因 DNS 只能讓兩個不同的 port 使用的同一個 IP,所以將會需要利用 Ingress Nginx 進行 TCP 服務的 proxy。 設定 Ingress 在設計上不支援 TCP/UDP 服務,因此 Ingress controller 會需要利用 –tcp-services-configmap 跟 […]

FOSDEM 2023 回顧

FOSDEM 2023 回顧

在忙著畢業找工作後又經過 3 年的疫情,已經很久沒有參加過國外的大型會議了。這次看到 OCF 有要去 FOSDEM 擺攤並且將能部分補助參與經費,思考了一下決定來參加看看這場歐洲大型的開放原始碼相關會議 FOSDEM 介紹 FOSDEM 全名是 Free and Open source Software Developers’ European Meeting,顧名思義就是歐洲的開源/自由軟體會議。從 2000 年開始舉辦已經有相當悠久的歷史,而前兩年 (2021/2022),由於疫情的緣故轉為全線上進行的模式,於今年 (2023) 改回實體會議。 個人今年參與的覺得 FOSDEM 整體來講與 COSCUP 非常相似,不過議程軌的豐富度跟多元性還是比 COSCUP 來得多,畢竟是聚集了整個歐洲的開源/自由軟體相關人員。 FOSDEM 議程 FOSDEM 議程的模式跟 COSCUP 類似,每個 Developer Room (簡稱 dev room)通常都會有一個主題,而大家可以選擇自己喜歡的主題待一整天或是在不同 dev room之間穿梭聽不一樣的主題。 這次主要參加了下列幾個 dev room Containers Kernel Software Defined Storage Virtualization and IaaS […]

在 Proxmox VE 上使用 Nvidia vGPU

前言 前幾週在中國的二手平台上看到了很便宜的 Nvidia Tesla P4,由於 Tesla P4 是半高單槽顯示卡,又不需要額外插電,非常適合放在 1U 伺服器上做使用,於是就買了幾張來測試 vGPU 看看。本篇將會介紹如何在 Proxmox VE 上使用 Nvidia 的 vGPU 功能。 vGPU 技術 先前一直對 vGPU 技術還蠻有興趣的,尤其是 AMD 號稱是開源且只要硬體支援就可以使用的 MxGPU 技術。但是在獲得一張 AMD Instinct MI25 後,卻發現開源的驅動程式只有支援到古老的 S7150,連不開源的驅動程式也沒有發布下載,只有大間的雲端廠商如 Microsoft Azure、阿里雲等才能夠獲得。在經過各種 patching 後 kernel driver 還是沒辦法正常運作,於是那張卡就被我放置在倉庫了。 Nvidia 自己獨有的 GRID 技術則是沒有開源,但是只需要註冊帳號就可以下載到驅動程式,這點相較於 AMD 我覺得是做得好很多。 至於運作的方式,AMD 的 MxGPU 是使用 SR-IOV,而 Nvidia GRID 在這張 Tesla […]

從裸機到雲端:OpenStack 部屬工具 3

Auto Draft

上一篇我們介紹了兩個有強大廠商後盾的部屬工具,本偏要介紹大多為社群成員維護的部屬專案,OpenStack-Ansible, Kolla-Ansible, OpenStack-Helm OpenStack-Ansible OpenStack-Ansible 就如其名,就是透過 Ansible 去部屬 OpenStack 的工具,其中支援非常多 OpenStack 元件以及不同的 Plugin。 OpenStack Ansible 主要透過 lxc container + Ansible-playbook 來安裝 OpenStack,其中有部分 service 並沒有放在 lxc container 中,如 nova-compute。 在 network plugin 的支援也是今天介紹的 3 個部屬工具中最多的,其中包含了在一些特殊環境下很好用的 Calico。 OpenStack Ansible 除了部屬 OpenStack 以外,同時也可以在部屬 OpenStack 儲存所需要使用的 Ceph,而其他專案如 Kolla-Ansible 的 Ceph cluster 就要額外自己部屬並且透過 config overwrite 去設定。 Kolla-Ansible Kolla-Ansible 是本次系列文章所選用的部屬工具,跟 OpenStack-Ansible […]

從裸機到雲端:OpenStack 部屬工具 2

從裸機到雲端:OpenStack 部屬工具 2

上一篇我們介紹了 DevStack 跟 MicroStack 這兩個非常容易上手但是比較偏向開發測試使用的部屬方式。今天筆者會來介紹 TripleO 跟 OpenStack Charms 這兩個有強大廠商後盾的部屬工具 TripleO TripleO 是 "OpenStack on OpenStack" 的縮寫。它是 OpenStack 中其中一個 project,其主要功能就是透過 OpenStack 的一些元件幫你部屬以及維運一個可用於實際生產環境的 OpenStack Cloud。 目前 TripleO 主要由 RedHat 維護,也是 RedHat OpenStack Platform (RHOSP) 的上游部屬專案 架構概覽 如剛剛所提到的,TripleO 是 "OpenStack on OpenStack",亦即是你會有兩個 OpenStack 環境。其中一個環境我們稱之為 undercloud。Undercloud 包含了一些必要的 OpenStack 元件用來部屬我們的 overcloud。Overcloud 是 undercloud deploy 出來的 OpenStack cluster,可以被用來 production, staging, […]

從裸機到雲端:OpenStack 部屬工具 1

從裸機到雲端:OpenStack 部屬工具 1

前面三周都在介紹雲端的概念以及 OpenStack 的架構,今天開始要實際進入 OpenStack 部屬相關的一些介紹。首先筆者會介紹一些 OpenStack 常見的部屬工具。 OpenStack 部屬工具 OpenStack 部屬工具有非常多種,每種適用的架構跟環境都不太一樣,在這兩篇文章筆者會帶過一些常見的 OpenStack 部屬工具,其中包含以下: DevStack MicroStack TripleO OpenStack Charms OpenStack-Ansible Kolla-Ansible OpenStack-Helm DevStack "DevStack" 顧名思義就是要拿來給 "Dev" 來用的,其主要目的是提供 OpenStack 開發者一個能夠快速測試其功能的環境。 DevStack 基本上就是一系列的 shell script,而預設會使用基於 git master 的最新版本快速部屬出一個完整的 OpenStack 環境。主要用途就是拿來當一個可互動的開發環境,以及上游 OpenStack 元件中 functional testing 的基礎。 MicroStack MicroStack 是甚麼? An OpenStack Environment in 2 commands MicroStack 是個讓你下兩個指令就能夠生成一個基本 OpenStack 環境的專案。能夠大大減輕 […]

從裸機到雲端:OpenStack Cinder 介紹

Auto Draft

今天我們要來介紹最後一項 OpenStack 元件,Cinder。Cinder 也是常見 OpenStack 部屬會提供的服務,也是 OpenStack 核心專案之一,我們就來一起看看 Cinder 提供了什麼服務以及其架構長得怎麼樣。 Cinder 是什麼? 在官方文件中是這麼說的: Cinder 是 OpenStack Block Storage 服務,用於為 Nova 虛擬機、Ironic baremetal、container 等提供 volume。 你可以把 Cinder 想像成一個提供硬碟的服務,他提供了一個 API 讓你可以在 Instance 上掛載硬碟,以提供儲存空間。除了單純的提供區塊式儲存到硬碟外,Cinder 額外的也提供了 volume snapshots 跟備份的功能,同時也能利用 volume type 管理不同的後端或儲存空間。 Cinder 本身設計的目標是: 基於 microservice 的架構:讓開發者能夠快速添加新功能 高度可用:可擴展到非常高的工作負載 容錯:隔離的 process 避免連動式的故障 Recoverable:Admin 可以很容易的發現,調整,解決問題 開放標準:成為社區驅動的 API 的參考實作 Cinder 架構 Cinder […]

從裸機到雲端:OpenStack Glance 介紹

從裸機到雲端:OpenStack Glance 介紹

在經過了好幾篇的 Neutron 之後我們終於來到下一個 OpenStack 核心專案,這次要介紹的是大家常常忽略,但是卻又很重要的 Glance。 Glance 是什麼? 在官方文件的定義中是這麼說的: Image service (Glance) 提供讓使用者可以上傳和發現目的在於與其他服務一起使用的數據資產。目前提供的是映像檔 (Images) 和 metadata definitions。 簡單來說,Glance 就是一個讓你儲存和下載映像檔和 metadata definitions 的服務。 映像檔 Glance 映像服務包括搜尋、上傳和下載虛擬機 (VM) 映像檔。 Glance 有一個 RESTful API,提供使用者查詢 VM 映像檔 metadata 以及下載實際的映像檔資料。 而儲存映像檔的方式可以有非常多種,目前常見的為:local filesystem, Ceph, Swift 等等。 Metadata Definitions Glance 在儲存映像檔的同時也可以儲存一個 Metadata Definitions 目錄 (Catalog)。 這為 OpenStack 的其他服務提供了一種以 API call 確定可應用於 OpenStack […]