2023-03-19 週記

本週因為有科內資深醫師請假,工作量增加;加上研究壓力,事情非常地多。真希望住院醫師能多給力一些,節省我打報告的壓力。

運行 Alpaca.cpp

有人基於被外流的 LLaMA 架構跟 Stanford U 逆向出來的參數設計了一款名叫 Alpaca.cpp,能運行於本地端的(不需要聯網)的類 chatGPT 軟體。不過,完全是不堪使用,根本不照著 instruction 走,結果也不對 XD 看來我想像中報告可以用本地 GPT 清理還需要一兩年時間。不過這東西可能挺適合用來練習日常會話。

購買 MBP M2 Pro

我現在的工作主力是 2018 年買的 Intel i7 core MBP。經過五年的奮戰之後,靠著外接顯卡盒續命至今,但是在處理較複雜的任務時容易滿載。去年 M1 max mac studio 跟 M2 出來的時候躍躍欲「購」,不過在比較了一下分數之後覺得可以再等等。如今 M2 pro 已出便不想再等,一開售就即刻入手。畢竟速度就是生產力

更新一下各個設備在 Geekbench 6 的跑分成果(會與去年用 Geekbench 5 的跑分有些微落差)。Workstation 的部分,顯卡從 Nvidia 1080Ti 換成 Nvidia 4090,分數暴增,十分驚人。

Score MBP 2018 Workstation M1 max M2 pro
單核 1254 1690 2392 2634
多核 4176 17044 12287 11898
圖形計算 66033 327488 64745 49096


購買 SteamDeck

SteamDeck 為了歡慶一週年特價 10% off。我看到這個新聞之後立刻下單訂購。最初半年有產能問題,而且我剛換了 Nvidia RTX 4090 顯卡,也可以用 PS5 玩遊戲,應該不需要買一個小型掌機吧?不過看了極客灣的深度評測 以及大人學等一眾 KOL 的好評之後,覺得還是可以考慮入手。

SteamDeck 操作方式跟介面類似 Switch,遊戲進行到一半可以隨時暫停、繼續,很適合睡前玩各種 Indie(獨立遊戲)以及模擬器內的老遊戲,同時也可以外接底座連結螢幕(不過應該用不到,所以我沒有買,畢竟我 PS5 內也有很多遊戲等待去玩)。


升級 ChatGPT Plus

ChatGPT 使用了兩個月,是非常不錯的私人顧問兼助手。我拿它來:

  • 修改文章(改的更通順)並微調詞彙
  • 從關鍵字筆記產出文本
  • 摘要論文內容,或是逆向出論文程式碼
  • 詢問各種程式、機器學習問題
  • 翻譯(這部分和 DeepL 各有千秋)

目前看來要問數學問題可能比較困難。最近看另名網友評論 ChatGPT,覺得很不錯,節錄一段如下:

因為搜索引擎是基於統計的反向鏈接而並不是基於知識的關聯來整理數據庫的,你用搜索引擎,每次搜索都是在龐大數據中淺淺的搜索一次,前後問題之間沒有關聯。ChatGPT 其實是一個知識漏斗模型。所以,搜索引擎往往耗費精力卻找不到知識,而 ChatGPT 可以很快找到知識。

最近看到不少人跟風用上了 ChatGPT,但是顯然過度高估語言模型的能力了。直接丟一個空泛的問題,要求 ChatGPT 給出詳細論述,這不是正確的用法。我最近測試了他的基本推理及結構化文本能力,效果很兩極:

  • 從不同醫師的報告中還原出 JSON 格式的結構化數據:很不錯
  • 從 LDCT 的報告中推估 Lung-RADS 分數:很糟糕

所以跟我想的一樣:做文字的處理非常強大(擴充、摘錄、風格改寫),然而要進行推論還是非常困難。不過最近 bingGPT 似乎展現了部分的推論能力,拭目以待其表現。

MathJax 渲染

目前數學部分是會返回 LaTeX 程式碼,且以 $$ 符號包圍。因此,只需要通過 UserScript 注入 MathJax 程式碼就能讓其渲染數學式了。這對我在詢問基本的數學原理的時候十分有幫助。相關工具網址是:ChatGPT LaTeX auto-render,需要使用者對這些工具有基本的認識。

Grammerly-like 英文修訂

主要是閱讀了這篇文章 ChatGPT v.s. Grammarly: Which does a better job?,裡面比較了各種修正,並介紹了一個能使用 ChatGPT 做修正的工具 EditGPT 以及 prompt。EditGPT 是一個前端外掛(現在有很多 ChatGPT UI 外掛),能夠一鍵開啟修訂前後的比較。我一看到這東西就立刻刪除、退訂 Grammarly 了!


2023-02-12 週記

主治醫師的第二個月,報告打的稀裡糊塗。有些很不明顯的打起來就十分害怕。肺部結節也是;目前科部內正在試驗 UCB / UCSF 的 Adam Yala 教授的 Sybil 預測模型,可以推論 Lung-RADS 1 或 2 等級結節的可能風險,十分令人興奮。

整合部落格「週記」與 Obsidian weekly note

安裝了 Periodic notes 後,會增加週、月、季、年記錄功能。日曆區域的週數部分則變成可點擊的項目。最近在整合 Daily notes,想到如果要維持可持續性的週記習慣,讓兩者結合或許是一石二鳥的作法 - 既回顧、且記錄。

更新 Apple 系產品的 TTS 引擎

最近跟狸貓上師討論到 TTS,我評價到:「如果 macOS 的引擎能有 Edge 瀏覽器的水準就好了」,結果狸貓上師跟我說他目前用了個內建 Evan 覺得很不錯。我打開 TTS 選項,發現原來 Apple 又更新了一大批引擎。我選擇了美式發音、最高階版本的 Zoe Premium,效果非常不錯。如果是用來閱讀文章或電子書,很適合用此引擎發音。


遊戲:最後生還者 第一章

四年前買 PS4 pro 便同時買了「最後生還者 Remake」;遊戲初期有些悶,不過後面進入劇情後搭配上緊張刺激的戰鬥,玩起來欲罷不能。後來第二章(part II)出來後也是早早預定。

第二章(Part II)出來之後獲得了極端兩極化的評價。遊戲本身評分拿了 10/10 並奪得當年 TGA 最佳遊戲大獎。然而玩家是罵聲一片。除了雙主角、雙主線的玩法外,遊戲還設計玩家必須在某個時間點與自己曾操作過的主角艾利(Ellie Williams)戰鬥。其實我覺得第二章扣除劇情之外的部分確實是做到了當代家機(PS4 pro)的極限了:動態的戰鬥場景、音效、光影。然後是各種不同的殺人方法都會反映在屍體上(刀傷、槍擊、爆炸、重物)。新品種的喪屍、可怕的醫院和地鐵站地下戰鬥場面令人印象深刻。

去年頑皮狗宣布重啟初代作為第一章(Part I),試圖將前作與第二章中有衝突的部分弭平。在次世代主機主機(PS5)上面重玩基於新引擎所改良的初代遊戲相當的吸引人。目前已經玩過一遍:

  • 遊戲戲劇情沒有什麼修改,可拾取的劇情信件也一樣多。
  • 第二章的許多武器特性並沒有移植到第一章,例如沒有不會壞的小刀,只有三次就報廢的彈簧刀。武器部分則同 remake 可獲取的那些槍械,沒有新增武器。
  • 場景變的更細膩,可見材質有所更新。
  • 跟第二章相比,戰鬥時的地圖較小且敵人少很多且不聰明。打過第二章再回頭打第一章會覺得稍微簡單且敵人「死相」單調

過年的時候把遊戲再玩了一次。本來想叫出 Part II,不過發現霍格華茲(Hogwarts Legacy)跟絕命異次元(Dead Space)要上市了,還是去玩新遊戲吧!


2023-01-29 週記

這兩週是農曆新年(Lunar new year)。不過我卻因為確診而關在家裡!我的疫苗接種狀態是 A-A-M,三者均為初代疫苗,最後一劑 Moderna 是一年前打的。前一陣子有在思考要不要去打次世代,但是希望能打高端一類的重組蛋白而不是 mRNA 疫苗。確診日記:

  • Day 0-2:發燒、畏寒、肌肉酸痛及全身無力,很像流感,但沒有那麼強烈。
  • Day 3-5:發燒逐漸好轉,但是上呼吸道症狀越發明顯,喉嚨腫痛、鼻涕及痰多,較以往的感冒嚴重。第四天的時候最為痛苦,咳嗽會痛、不咳嗽會積痰影響呼吸。
  • Day 6-8:呼吸道症狀減輕,大概每一個小時咳嗽一次清一下痰即可。注意到了一種輕微的、持續的暈眩感。

目前看起來是沒有腦霧,但體能影響如何可能要後續訓練才知道。看我的教練他前一陣子也確診,但似乎兩天就沒有症狀了,所以胖子比較嚴重應該是真的 XD

Ivory & Tweetbot

Twitter 封殺了所有主流的第三方軟體,Tweetbot 也一擊斃命,嗚呼哀哉。還好我的續費是二月初,趕緊取消。官方已經架設了自己的伺服器,同時 Tapbots 針對 Mastodon 發佈了 app 叫 Ivory,操作介面還原 Tweetbot。目前依然處在很早期的 beta 階段,很多功能還未開發完畢,但已經開始收費:一般年費 490 新台幣、「支持者」年費則是 790 新台幣,功能一樣。目前沒有辦法連入我所使用的輕量 Mastodon API 替代方案 GoToSocial,所以最後應該還是會取消付費,繼續使用 Metatext。

Writing Down What I Do

這週讀了一篇文章 Writing Down What I Do — In Obsidian。作者提到他會固定寫週記、月記、季度和年度回顧。通過把日記嵌入到週記、週記嵌入到月記的方式,可以在不影響原始文件的情況下獲得詳細的總覽。我覺得關鍵點在於:必須將每天的工作流程(包括待辦事項)全部整合進日記中。作者敘述他的工作流程:

  • 建立日記
  • 將行事曆的會議排程寫入日記中
  • 隨著工作進行,記錄時間塊的應用狀況
  • 每天結束工作時總結結果

週記及月記、季度回饋都是通過類似方式整合連結,總結當前結果並敘述下個時間週期的目標。我覺得這樣的方式似乎對於控制自己的工作模式有所幫助。就我所知,不少高效率人士也有每日記錄的習慣,我也打算逐步養成以文字記錄及規劃為主軸的流程。不然我現在項目不停開展,已經逐漸陷入混亂。

FauxPilot

程式在 Github。基於 Salesforce 釋出的 CodeGen 模型,資料來源是 THEPILE / BIGQUERY / BIGPYTHON 三項目。這個程式是個運行在本地機器的 Copilot 替代方案,可以通過 Hugging Face 的 transformer 工具進行二次訓練。其最大的模型需要 32 GB 的 VRAM,所以我的 4090 應該只能運行次級方案。可以用 OpenAI 的工具做對話機器人,也可以魔改 Copilot 的套件去使用這個程式做程式碼預測。


自訂喜歡的 Iosevka 字體

看 Gea-Suan Lin’s Blog 有篇介紹 Victor Mono 字型的文章,繼續閱讀原本的 HN 討論串,發現原來我以為的窄版字體 Iosevka 其實是有一整套複雜的生成機制,可以用來產生自己喜歡的類型(字體架構還是 Iosevka,但是櫬線、寬度、部分字元的字形以及 ligatures 都可以改)。

配置設定檔

進入 Iosevka 配置工具,總共有三個項目可以選擇:

  1. 基本設定,包括是否需要櫬線、字形寬度跟間隔。我的話是 Slab、normal spacing、400 字重。另外我只需要寬版,所以選擇 extended as normal。另外輸出 glyph names 給 kitty 終端模擬器。
  2. 字形我選 Jetbrains Mono style,會用藍色反白出跟原本 Iosevka 哪裏不一樣,可以多比較。這部分隨個人喜好。我的話是看數字 0、英文小寫 g l 以及符號 & 是否順眼。
  3. Ligatures 則是選擇自己喜歡的呈現形式(抑或關閉)。

接著就可以獲得一套設定檔,我的設定檔案如下:

[buildPlans.iosevka-yfwu] 
family = "Iosevka YFWU" 
spacing = "normal" 
serifs = "slab" 
no-cv-ss = true
export-glyph-names = true 

  [buildPlans.iosevka-yfwu.variants] 
  inherits = "ss14" 

  [buildPlans.iosevka-yfwu.ligations]
  inherits = "julia" 
  
[buildPlans.iosevka-yfwu.weights.regular] 
shape = 400 
menu = 400 
css = 400 

[buildPlans.iosevka-yfwu.widths.normal] 
shape = 600 
menu = 5 
css = "normal"

需要存檔為 private-build-plans.toml ,放在等下建構程式的資料夾中。實際上

安裝 Iosevka 建構程式

需要額外安裝一個叫 ttfautohint 的軟體。我用 macOS,所以通過 brew 安裝。接著參考官方說明,複製一份最新的原始碼,然後按照前面配置工具給的指令建構。

git clone --depth 1 https://github.com/be5invis/Iosevka.git 
npm install
npm run build -- ttf::iosevka-yfwu

建構過程需要一點時間哩!跑完後可以到 dist 資料夾中收取成果。這樣就算是建構好了我自己指定的字體啦!

Iosevka-YFWU Iosevka YFWU - 最終成品。預覽程式是 Setapp 中的 Typeface。


反思大型語言模型

看到一個 Twitter 大佬分析自 chatGPT 橫空出世之後,會有怎樣的生態變化(Thread 連結)。他認為超級模型(不只是最近火爆的 LLM)會是和個人電腦、互聯網、移動互聯網一樣重要的範式轉變。同時也會催生出新的產業分層:

  1. 巨頭:能拿出十億美元等級資本訓練超級模型
  2. 大公司:能拿出千萬到一億美元等級資本,微調或在特定垂直領域訓練模型
  3. 小公司和團隊:基於別人的 API 進行應用開發;這也是競爭最激烈的層級
  4. 底層:接受 AI 指揮工作、受限於系統(例如網約車、外賣)

增長機會:

  1. Domain knowledge and dataset
  2. Next-generation robotic process automation
  3. Vector database: Pinecone, Weaviate, Milvus
  4. Symbolism & simulation neuroscience
  5. Prompt engineering

不知道醫療行業在這一波趨勢下會如何變化?總感覺有點跟不上時代了。最近把 Radiology AI 子期刊加入 RSS 閱讀器中作為固定閱讀項目,希望能多少抓到一點趨勢。當然,日常工作還是得好好的完成,心態上抓一個比例是 6:3:1 - 6 分工作、3 分研究、1 分興趣(functional programming 一類的)。

技術奇點 Singularity

在一個小眾評論網讀到了這篇文章 Humanity May Reach Singularity Within Just 7 Years, Trend Shows,提到了幾個有趣的觀點:

  • 編輯時間指標:修補機器翻譯與人類翻譯的所需要的時間(TTE)
  • 十年內這個指標達到 0,亦即翻譯領域的技術奇點:我們將擁有「翻譯蒟蒻」,這或許會大幅改變人類世界溝通的樣貌

通俗的概念是:

  • 奇點象徵著人工智慧尋找知識、改造自己的能力強於人類。
  • 之後的事件就像黑洞的事件視界一樣完全無法預測。

不過這已經超出我的理解範圍了。維基百科 technological singularity 條目倒是洋洋灑灑列了很多「未來學專家」的觀點。


在 Emacs & Vim 中啟用 Github Copilot

Github Copilot 預設提供 Jetbrain IDE / VS Code / Neovim 這三家官方套件

Emacs

有人針對 Neovim 套件內的二進位檔案做了再包裝給 Emacs,於是我們有了 copilot.el。安裝方式不難;像我是使用 Doom Emacs 框架的用戶,在 .doom.d/packages.el 中添加:

(package! copilot
  :recipe (:host github 
           :repo "zerolfx/copilot.el"
           :files ("*.el" "dist")))

以及在 .doom.d/config.el 中添加 hook 如下:

;; accept completion from copilot and fallback to company
(use-package! copilot
  :hook (prog-mode . copilot-mode)
  :bind (("C-TAB" . 'copilot-accept-completion-by-word)
         ("C-<tab>" . 'copilot-accept-completion-by-word)
         :map copilot-completion-map
         ("<tab>" . 'copilot-accept-completion)
         ("TAB" . 'copilot-accept-completion)))

啟動 .doom.d/init.el 中的 company-mode(company-mode +childframe),就算是初步設定完畢。用 doom sync 同步後重啟即可。由於 Github Copilot 現在是付費服務,需用 M-x copilot-login 通過瀏覽器來連結帳戶。這個過程會自動跳轉,所以按照指示很滑順就完成了。

Neovim

Doom Nvim 的設定方式沒有單獨分一個資料夾,而是通過切分 my-config branch 放在一起。在 config.lua 中填入:

doom.use_package("github/copilot.vim")

然後重啟、輸入 :PackerSync 即可完成安裝。輸入 :copilot setup 完成設定。似乎是通過呼叫某個 npm package 來調度 API?我發現我設定好了 Emacs 的之後,Nvim 的自動也可以使用了。


使用 Doom Nvim 配置 Neovim

除了搗鼓 Doom Emacs 外,我也在同步翻修我的 Vim 配置。其實我最一開始接觸 FOSS 時是個 Vim 用戶,也玩 vim-wiki 等各路工具。大約一年半後因為學習 Lisp 的原因轉戰 Emacs,不過我倒是一直記得 Vim 的基礎快捷鍵,也有一套基於 Vundle 的設置。不過此物及我的配置皆年久失修矣。

Kickstart.nvim

最近在看一些介紹終端機駭客的影片時,提到了 kickstart.nvim 這套工具,開箱即用,令人心動。安裝方式很簡單 - 把 init.lua 複製到 Neovim 預設的配置資料夾 .config/nvim 中即可。稍微閱讀了一下其內容,初始化會安裝幾類工具 - 跟我那時候認識的工具簡直完全不同呀(YouCompleteMe 變成 COQ/CMP、fzf 變成 telescope)!

  • Package management: wbthomason/packer.nvim
  • LSP management: williamboman/mason.nvim
  • Auto-complete function: hrsh67th/nvim-cmp
  • Highlight and navigation: nvim-treeitter/nvim-treesitter
  • Git related plugins: tpope/fugitive
  • Themes and status line
  • Fuzzy finder: nvim-telescope/telescope.nvim

接著是安裝(未安裝情況下)和各種 Vim 配置。最後兩大段則分別是設定 treesitter 和 LSP(基於 mason.nvim)。整體來說還蠻簡單的。

Doom Nvim

後來為了跟 Doom Emacs 有更接近的操作,改用了 doom-nvim 這個套裝。大部分常用的快捷鍵是通用的。啟動速度也很快(一樣採用了 lazy loading 策略)。目前踩到的第一個坑是需要 nerd-font;其他就且戰且走看看現代化編輯器又有什麼新玩法。預設套件部分與 kickstart.nvim 差異無幾。

Doom Nvim 希望使用者切換至自己的 branch 修改官方提供的 modules.luaconfig.lua

git checkout tags/$(git tag -l --sort -version:refname | head -n 1) -b my-config

之後使用 :DoomCheckUpdates 更新 Doom Nvim 本體、用 :PackerSync 更新各路套件。這個作法跟 Doom Emacs 不太一樣。

使用 Mason 安裝 LSP

目前主流的 LSP 管理工具 Mason 帶有一系列安裝腳本,可以代替用戶自動安裝各個語言的 LSP。我試了下,用它安裝 r_language_serverpyright 都十分簡單:

:LspInstall r_language_server
:LSpInstall pyright

Mason 需要系統安裝 luarocks 這個工具來幫助使用。如果需要額外的第三方工具,安裝 LSP 過程中則會報錯並彈出提示。除了通過命令安裝,也能開啟 Mason :Mason 移動游標並按下 i 進行安裝。這個 LSP 是全系統的,所以理論上其他支援 LSP 的編輯器也能讀到。算是一個很不錯的管理終端。


使用 Doom Emacs 配置 Emacs

就目前的使用體驗來說,VS code 唯一的重要性就是橋接 Github Copilot。除此之外的大部分工作和運行狀況都只是編輯用於機器學習或圖片處理的 Python script,因此一直有重返 Emacs 的念頭。不過我自己的套件體系已經很難維護,我也打算找一套別人架構好的直接使用開工。目前兩套主流的分別是 Spacemacs 跟 Doom Emacs。

安裝 Doom 仰賴諸多腳本協同運行,且需要安裝額外的工具。

brew install git ripgrep coreutils fd 
git clone https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install

安裝後需要將 Doom 的腳本加入 $PATH,另外也啟用 emacsclient:

export PATH="$HOME/.emacs.d/bin:$PATH"
alias emacs="emacsclient -t -a ''"

一些注意事項包括:

  • 修改了 .doom.d 中的設定後要執行 doom sync
  • 出問題時使用 doom doctor 協助診斷問題點
  • doom upgrade 升級 Doom
  • 文件參考 SPC h d h 或是 M-x doom/help

所有文字編輯與模式切換部分同 Vim 包括 insert-mode 和 visual-mode 等。除了最基本的 evil-mode 外,也有採用 Spacemacs 方案的 SPC 開頭的功能選取:常見的 SPC 操作包含文件操作(SPC f)、緩衝區 buffer 操作(SPC b)和窗口操作(SPC w)。跟我的 plain-film auto-hot-key 快捷編碼很像?

啟用 init.el 中的套件

反白註解即可。官方預設了一大堆已經配置好的功能。也可以通過 + 的方式引入選項,例如 (python +lsp +pyright) 來啟用對應的服務。我看了下,大部分都是老朋友,例如 parinfer、projectile 及 lispy,也有很多新的工具,例如 treemacs。

安裝 Emacs-plus

專門為 macOS 編譯的、功能更多的 Emacs。需要通過 tap 安裝。

brew tap d12frosted/emacs-plus
brew install emacs-plus

第一份報告

發出了我自己的第一份 CT 報告,記錄一些我當時的想法以茲紀念。我的模板是:

BASIC INFO:
TECHNIQUE:
COMPARISON:
{TUMOR BURDEN} or {LUNG NODULES}
MAJOR / MAIN FINDINGS:
OTHER FINDINGS:
IMPRESSIONS:

BASIC INFO & TECHNIQUE

  1. 會列出檢查目的。大致來說電腦斷層或核磁共振,其檢查的目的多半是新問題的進一步評估(evaluation)、舊問題的追縱(follow-up)、癌症分期(staging)。報告內容會稍微做調整。
  2. TECHNIQUE 是記錄檢查 protocol,如口服顯影劑或 dynamic study。
  3. TUMOR BURDEN 或是 LUNG NODULES 獨立可方便查看。也許未來會針對不同的特殊主題再做其他細分也說不定。等於是把報告變成三大段。

MAIN FINDINGS

  1. 報告第一段通常是列出已知的問題和已知的手術。
  2. 列出上次檢查注意到的舊問題,一定要列出來並比較。
  3. 本次檢查注意到的新問題,並指出大小及位置,方便臨床進一步切片(biopsy)或之後下一個報告追蹤。一般來說我只會指出最主要的病灶。

OTHER FINDINGS

  1. 起手式是一些無關緊要的 cyst 以及 negative finding 的詞語。我在思考是不是條列式比較好,有類似 checklist 的意味在。
  2. 管路及其位置也是報告的一環。
  3. 通常用 no bulky lymphadenopathy 或 non-specific lymph nodes 來形容不怎麼樣的淋巴結,通常也是良性,但是大小稍微大了一些。在婦癌會議我們會用 score 2 來描述可能良性、score 3 描述可能惡性,同核醫科習慣。

IMPRESSION

  1. 我不喜歡把本文再複製一次,所以會簡短整理一下文本內容,方便臨床醫師閱讀。
  2. 例如一個多重復發我會這樣整理:Disease in progression as new multiple metastasis in bilateral lung fields, right pleural seeding tumors with mild effusion, lymphadenopathies in right axilla with chest wall invasion.

2023-01-01 週記

新年新希望:

  • 短期目標:
    • 二月北區雙月會報告,整理好之前做淋巴水腫的資料
    • 三月到期前刷完 RADPrimer(要到期了,不想再續)
    • 四月投稿 RSNA poster
  • 中期目標:
    • 把主治醫師工作做好:報告不要漏腫瘤、做檢查不要搞死病人
    • 持續學習新知識,刷米妮阿姨每日病例
  • 年度目標:
    • 生兩篇 SCI 論文,報名 RSNA
    • 去今年秋天在倫敦的世界癌症影像大會

eGPU 大翻新

用了三年多的 Akitio Node Pro 不知道為什麼壞了。本來以為是電源,結果接了我舊的 550 瓦電供後也沒什麼變化(外部電源插在顯卡盒上很像 ICU 病人接著呼吸器)。我猜是主板壞了?應該還是送修一下,然後這個顯卡盒子就能拿到科內當機器學習平台了!


使用 eGPU 搭建機器學習工作站

原本有一張 AMD Vega 64 用於擴展 MBP 外接三螢幕,一張 Nvidia 1080 Ti 用於大主機。上個月入手 Nvidia 4090 之後,這張 1080 Ti 就閒置了。最近又有突發事件是上週裝 Vega 64 的 Akitio Node Pro 壞了。除了新購了 Razer Core X Chroma,另從朋友那裡買了一台 Akitio Node 重新佈局一下。

目前是:

  • 大主機:Nvidia 4090
  • 小主機(Intel NUC):Nvidia 1080 Ti + Akitio Node
  • MBP:AMD Vega 64 + Razer Core X Chroma

啟用 TB3 及顯卡

我的 Intel NUC 中是 Arch Linux,故參考官方 Wiki 配置驅動。因為機器是在自己家裡,不是公司,比較不擔心 DMA attack,所以採用暴力解法:先建一個新的 /etc/udev/rules.d/99-removable.rules 然後寫入:

ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"

重開機後即可啟用 thunderbolt 3 設備。通過 boltctl 可以看到設備資訊。

CUDA

要運行 CUDA 還需要安裝 Nvidia 驅動:

sudo pacman -S cuda nvidia

之後可以通過 nvidia-smi 確定是否能驅動顯卡運行。關於 CUDA 部分,我使用 PyTorch 來檢測。官方網站有提供安裝指令配置,我是選擇最新版的 CUDA 搭配 pip 安裝。

import torch
torch.cuda.is_available()

如果是 True 那就沒有問題了,一切運作良好。

Monero 挖礦

另外用挖礦來檢測一下顯卡功能。我曾經挖過一陣子的 Monero / XMR 幣,用的工具是 XMRig;雖然現在 Arch Linux 有提供二進位文件,但我喜歡自己搞。本體 XMRigCUDA plugin 需要分開編譯。

git clone <repo>
cd <repo>
mkdir build
cd build
cmake ..
make

完成後,從 CUDA-plugin 裡面複製 libxmrig-cuda.so 到 XMRig 本體資料夾。設定檔的部分可用官方生成器 configuration wizard 來產生。一開始的設定檔挺短的,不過 XMRig 好像會自己去填充必要資訊。

Nvidia 1080 Ti 的 hash-rate 一如當年也是 830 H/s 上下。另外在我的大主機上測試下,AMD R9 的 hash-rate 是 15300 H/s 而 Nvidia 4090 是 4500 H/s,差距十分驚人。


2022 年度遊戲

今年 TGA 2022 頒獎給 Elden Ring(艾爾登法環),個人覺得實至名歸。今年因為準備考試,遊戲沒有玩那麼多。不過,也來稍微記錄我今年玩過的大作。一些小黃油當然就不寫了。

Ranni 圖:Unless of course…thou shouldst take the crown?

Horizon The Forbidden West

地平線是 2022 年玩的第一款大作。細節部分請見 遊戲:地平線西域禁地。我個人覺得末日後世界依然是我最愛的遊戲主題,不管是喪屍、瘟疫還是核戰。不過,除了最後一戰登島後的幾場戰鬥,遊戲前中期的各種 boss 戰鬥比較缺乏史詩感(跟戰神、法環相比),缺少了二週目再戰的動力。繼續期待遊戲三部曲的最後一部,也祝福他們能拿下來年的 TGA。

Elden Ring 艾爾登法環

其實這是我第一次接觸魂系遊戲。經過上百小時的奮戰(專科考試 & 研究進度:哭)。一開始玩的時候什麼攻略都沒看,選了個武士,在史東威爾城前放棄。看了一些攻略後以法師身分重啟,後來慢慢往魔劍士的方向升級,才算找到了遊戲的樂趣。目前卡在野獸祭司的九個死根滅除任務,希望能完成它們再去挑戰黑劍瑪利喀斯(Maliketh)。

Control

不是新遊戲,但是買了一直沒玩,放到 2022 才開動。這是個以類 S.C.P. 基金會(Secure Contain Protect)故事為核心的箱庭遊戲,場景十分精緻,從海報到各種文件,勾勒出了管理局(Federal Bureau of Control)及亙古之屋的樣貌。遊戲的對戰武器亦是一把異次元物質,解鎖技能的過程是通過「星界」設計的考驗。目前是打完了以相當奇怪的方式結束的主劇情,正在解鎖 DLC - Foundation & AWE。

God of War & God of War: Ragnarok

戰神(四)是當初買 PS4 同捆的。當時玩了開頭不到 20% 就棄坑,應該是對他們的解謎模式比較不適應。後來因為諸神黃昏即將上市,為了了解劇情邊重新玩起。劇情部分其實是慢慢醞釀起來;第一個高潮就是 Kratos 為了前往 Helhelm 而回家拿武器那一段。搭配上主題曲,是我玩過最霸氣的過場。

展望 2023

  • 升級版的 Witcher III
  • Zachtronics 的遊戲,例如 TIS-100 / Shenzhen I/O
  • Turing Compete
  • S.T.A.L.K.E.R. 系列
  • 隻狼
  • 歧路旅人 1 & 2
  • Alan Wake 及其續作
  • 即將上市的:哈利波特、薩爾達王國之淚

2022 日本旅行:池袋、鎌倉、横浜、下北沢

疫情算是告一段落,雖然目前依然持續有一波波的流行潮,不過大規模癱瘓醫療資源已經比較不可能發生;台灣政府在日本政府之後也開放國民海外旅遊。趁著升主治之前的空檔去日本玩幾天。行程如下:

  • 12-09 池袋
  • 12-10 鎌倉
  • 12-11 横浜
  • 12-12 下北沢

池袋

紅眼航班飛機落地後就搭 skyliner 到京城上野。在行李櫃寄放完後搭車去池袋。最主要是附近的幾個商場參觀。去了福音戰士的專賣店 - 比我想的還小間。買了一些不好買到的原畫集後回到飯店,累得睡了一下午。

鎌倉

先去看了大佛,在附近的另一個小佛寺吃了午餐,接著便搭江ノ島電鉄線去江之島。圖中經過了灌籃高手著名的平交道聖地,不過沒有下車拍照。江之島景色不錯,還可以隔著內海遠眺富士山。島上有很多餐廳佔據了天然的景點位。我們一直待到太陽下山。天色越暗、人潮竟然越來越多,大家都是要來看江之島海蠟燭的夜景。

Enoshima 圖:富士山

横浜

我們的行程是從櫻木町出發,先穿過中國城去看鋼彈。午餐本來想要吃一些特色美食,最後不爭氣的吃了一間位在中國城、店員會講普通話的川菜料理。吃完後在市區內閒逛,去參觀跟《櫻花大戰》帝國大劇場幾乎一模一樣造型的橫濱開港紀念會館,不過竟然外牆在整修!

Yokohama port 圖:鋼彈與橫濱港

之後沿港口的舊軌道改建成的步道,穿越紅磚倉庫來到未來港,接著搭 2021 新蓋好的纜車回車站,結束一天在橫濱的行程。

下北沢

起床後先去《櫻花大戰》主角相遇的上野公園閒晃。上次來的時候還不知道這個公園的重要性。雖然現在沒有櫻花可看,卻有很多美麗的銀杏。

Ueno Park 圖:上野公園美麗的銀杏。

接著去下北澤遊覽。下北澤的特色就是文青、古著、咖喱。老弟目標是去《孤獨搖滾》聖地拍照,我是隨性逛逛,體驗一下這個令東京年輕人嚮往的城區到底有什麼魅力。去參觀了幾件古著店,感覺不太像是我會感興趣的衣服類型。

吃完咖喱午餐後還有十分充裕的時間,轉車去參觀了一下人氣被晴空塔取代的東京鐵塔。據說高度跟大小與巴黎鐵塔不相上下?不過沒有上去參觀 - 要好幾千日圓呢!

秋葉原

每天四五點就去秋葉原附近鬼混。逛了各種大大小小的店,看二手商品以及電器,沒有看到任何《櫻花大戰》的蒐藏品,挺失望的。另外買到了《少女與戰車》的全套迷你黏土人以及一些大本的設定集。目標是下次來玩的時候把日語學好,來吃女僕餐廳。

出入境 & 航班

  • 都是搭樂桃從桃園國際機場飛成田,都是紅眼航班,單人來回 13000 台幣。
  • 入關後在成田機場走了一條超長的檢疫通道。
  • 日本雖然解除了口罩禁令,但是絕大多數人都還是戴著。
  • 出關前有個退稅自動登記機器,要去刷護照登記。