冼鏡光教授的「並行計算講堂」

在「Backend 台灣 (Backend Tw)」上看到冼鏡光教授的消息:(3257396121060908)

各位好

密西根理工大學資工系的冼鏡光教授,近期退休後將他的在學校授課時的並行計算(Concurrent Computing)課程、教材逐漸數位化,免費公開、分享給大家使用。

英文版的教材先前已全部製作完畢,近期教授正在努力製作中文版的部分,想讓台灣有興趣的工程師及學生比較不會受到語言的限制。

中文版的教材連結(目前更新至第二集):https://pages.mtu.edu/~shene/VIDEOS/CONCURRENT/index-TW.html

網頁在「【冼鏡光並行計算講堂】」;影片的部分是放到 YouTube 上面,可以參考 @ckshene7212/videos 這邊。

我們這個年代自學的 programmer 或多或少都有看過冼教授的書,不過畢業後看到冼教授的中文消息主要都是在攝影相關的領域,蠻開心可以看到教授退休後回來 CS 貢獻。

另外看了一下 html 頁面的寫法 (職業病?),沒有看到 doctype,大概是 html3 或是 html4 的用法,蠻有可能是教授自己用軟體弄的。

YouTube 頻道先訂閱起來,找時間翻一下影片...

Oxide 推出的 Oxide Cloud Computer

Hacker News 上看到「The Cloud Computer」這篇行銷新聞稿被衝了很高,翻了一下討論「Oxide: The Cloud Computer (oxide.computer)」,裡面看到不少有趣的東西。

行銷新聞稿裡面包裝的很「行銷」,如果看完後可以理解 Oxide Cloud Computer 其實就是賣機櫃,裡面包好一個 mini AWS 需要的硬體與軟體。

這個機櫃裡的硬體部分可以在「Specifications」這邊看到,裡面有主機、網路與電供這些東西,而且照他提到的 60cm * 106cm 的佔地面積需要 1145kg,一般辦公建築物沒辦法直接放,需要用架高地板的方式把重量打散掉,而且放好幾台的時候應該需要找結構工程師重新計算安全性;如果是機房的話應該是有機會直接塞進去 (因為前面的事情都先考慮過了)。

軟體的部分則是在 id=38024259 裡面看到的,上面是用 Illumos 當作 hypervisor,這是 OpenSolaris 的 fork,這個選擇還蠻特別的,不是選 Linux-based 的系統來包,不確定是不是考慮到 license 的問題:

The hypervisor OS is based on Illumos, which was forked from OpenSolaris, and it uses Bhyve from FreeBSD for virtualization.

另外在 id=38026273 這邊也有一些解讀,可以了解 Oxide 在 Illumos 上面重新實作了 OpenStack 的功能 (也可以看做 mini AWS):

Oh. I get what this is. It's a "cloud" mainframe. They're trying to be the Apple of mainframes.

Reinvent OpenStack, slap it on some 8Us and storage arrays, shove it in a rack, and ship it to a colo with a professional installer. So basically one of the larger server vendors but with integrated "cloud" software, minus the 2-hour service turnaround and spare parts.

The fact that they're writing the software from scratch is going to add years of lead time until they reach parity with other solutions. My guess is they're hoping they can get sticker price or TCO low enough that it outweighs the lack of functionality and uncertainty of a brand new everything. If you just need some VMs in a lab in the office closet, might work.

可以想到的 TA... 馬上可以想到的是,需要把資料都控制在自家的公司 (像是金融法規/軍方/TSMC/...),這些公司在這之前的路線會是買硬體後上 VMwareCitrix 或是 OpenStack 之類的方案,這些方案除了可以自己養人,應該也都有 SI 可以付費代操。而 Oxide 這次給出來的方案則是都包掉?不過 SI 也可以去包 bare-metal server 來賣就是了...

其他的暫時想不到,畢竟 ecosystem 還是很重要,Oxide 推出的東西沒有特別吸引人的地方,也許看看還能怎麼包裝跟想像?

KataGo 1.12.0 與 UEC 杯用的 model:b18c384nbt-uec.bin.gz

剛剛看到 KataGo 出了 1.12.0,同時也放出了在 2022 年十一月 UEC 比賽時用的 model:「New Neural Net Architecture!」。

1.12.0 比較特別的新的類神經網路架構:

This version of KataGo adds support for a new and improved neural net architecture!

這個新的架構以及其他的改善讓訓練的速度改善:

The new neural nets use a new nested residual bottleneck structure, along with other major improvements in training. They train faster than KataGo's old nets and learn more effectively.

另外一個是他把 UEC 比賽時用的 model 放出來了,很特別的是採用 b18c384,而 KataGo Distributed Training 這邊目前主要是 b40c256 與 b60c320,看起來是為了比賽而一次性訓練出來的。

依照他的說法這個 b18c384 版本跟目前訓練網站上的 b60c320 有差不多強度,但計算速度會比 b60c320 快不少,甚至在一些機器上會跟 b40c256 差不多快:

Attached to this release is a one-off net b18c384nbt-uec.bin.gz that was trained for a tournament in 2022, which should be of similar strength to the 60-block nets on http://katagotraining.org/, but on many machines will run much faster, on some machines between 40-block and 60-block speed, but on some machines even as fast as or faster than 40-block.

另外一個大改變是他把訓練工具從 TensowFlow 跳槽到 PyTorch

The training code has been all rewritten to use pytorch instead of tensorflow.

在 release note 裡沒有提到原因,但這個頗讓人好奇的...

方便設條件找 SBC (Single Board Computer) 的網站

前幾天看到的,忘記是 Hacker News 還是哪邊了,可以直接拉旁邊的條件找出適合你的 SBC:「The Single Board Computer Database」。

像是這樣,如果我想要找個可以當 software router 的板子,我就拉幾個條件翻翻看 (像是至少兩個 ethernet 界面):

不過看起來網站是 server side filtering,在桌機上操作會覺得有點慢,如果只有四百多片的話好像可以考慮 client side filtering...

Perl 的 Regular Expression 的強度:NP-complete

這篇稍微偏 CS 理論一些...

以前在學校學 Formal language 的時候會帶出 Grammer、Language、Automaton 三個項目,就像是維基百科上的條列:

裡面可以看到經典的 Regular expression 會被分到 RG/RL/FSM 這三塊。

前幾天看到 gugod 寫的「[Perl] 以正規表示式來定義文法規則」這篇,裡面試著用 Perlregular expression (perlre) 建構「遞歸下降解析器」 (Recursive descent parser)。

Recursive descent parser 可以當作是 CFG 的子集合,而 CFG 對應到的語言是 CFL,另外他對應到的自動機是 PDA

我們已經知道 perlre 因為支援一堆奇怪的東西 (像是 backreference 或是 recursive pattern),所以他能接受的 language 已經超過 RL,但我很好奇他能夠做到什麼程度。

用搜尋引擎翻了翻,查到對 PCRE 的分析 (這是一套與 Perl regular expression 語法相容的 library):「Which languages do Perl-compatible regular expressions recognize?」。

在裡面有人提到「The true power of regular expressions」這篇文章,裡面給了一個在 PTIME 演算法,將 3SAT 轉換到 PCRE 裡解,這證明了 PCRE 是 NP-hard;另外也很容易確認 PCRE 是 NP,所以就達成了 NP-complete 的條件了...

本來一直以為 PCRE 只是 CFG/CFL/PDA 而已,沒想到這麼強,NPC 表示大多數現有的演算法都可以轉成 PCRE 形式放進去跑... XD

各種反直覺的項目

前陣子看到「The most counterintuitive facts in all of mathematics, computer science, and physics」這篇,講各種反直覺的項目,有空的時候拉一兩個來讀還蠻有趣的...

第一個提到的是 Homomorphic encryption。在密碼學的保護概念中,密文是不能被操作的,但我們可以透過重新設計密碼學系統,讓密文可以被運算:

1. It is possible to compute over encrypted data without access to the secret key: https://en.wikipedia.org/wiki/Homomorphic_encryption

2009 年的時候第一個 FHE (fully homomorphic encryption) 演算法被提出來後就被大量討論,這代表你可以把資料加密後丟上雲端,利用雲端的大量運算資源運算完後,再把資料拉回地端解密,得到運算後的結果。這算是 Lattice-based cryptography 的一個很重大的應用。

其他的主題也蠻有趣的,先丟著找機會翻...

CVE-2021-32471 發了一個 1967 年電腦的安全性漏洞?

Hacker News 首頁上看到好幾則都在講 CVE-2021-32471

Insufficient input validation in the Marvin Minsky 1967 implementation of the Universal Turing Machine allows program users to execute arbitrary code via crafted data. For example, a tape head may have an unexpected location after the processing of input composed of As and Bs (instead of 0s and 1s). NOTE: the discoverer states "this vulnerability has no real-world implications."

等下,今天不是四月第一天啊,現在已經五月多了啊...

LastPass 開始進入「殺」的階段,免費使用者只能在一個平台上使用

LastPass 進入了「套養殺」最後一個階段「殺」,宣佈縮減 LastPass Free 的可用範圍。在 2021/03/16 開始 (一個月後),LastPass Free 的使用者只能選擇一個平台使用,像是「桌機平台」,或是「行動平台」:「LastPass’ free tier will become a lot less useful next month」,官方的新聞稿則是在「Changes to LastPass Free」這邊。

官方有提供第一年的限時優惠 (換算起來應該是一年 USD$27),但不給既有用戶,現有的用戶如果要的話得自己換帳號 export & import,不然就是用原價殺 (一年 USD$36):

If you’d like unlimited device type access and email support, you can upgrade from Free to LastPass Premium for a limited time, for $2.25 per month (billed annually). *

*Additional Terms and Conditions: Advertised price valid for new users on their first year of LastPass Premium. Price not valid for renewals or existing customers and cannot be used for other LastPass plans, products or services.

不過這個優惠連結發現點下去是爛的:

話說回來,這種東西我自己還是偏好用 open source 方案,然後自己搭同步機制,不過目前看到的方案在跨桌機平台與行動平台的確是痛點... 有需求的人應該還是會選 LastPass 或是 1Password 這樣的方案。

Raspberry Pi 400

Raspberry Pi 推出的整合性硬體 Raspberry Pi 400:「Raspberry Pi 400: the $70 desktop PC」。

主體是 Raspberry Pi 4 (4GB 版本) 整合鍵盤 (一體成形,順便就有外殼了),另外週邊的配件包括了預載 OS 的 SD 卡、滑鼠、電供,以及 microHDMI 轉 HDMI 線,這樣整包的價錢是 USD$100,但如果只買主體的部份則是 USD$70。

算了一下是不貴 (4GB 版本應該是 USD$55),主要就是方便吧... 不過散熱的部份不知道有沒有另外處理,如果沒有的話可能得自己貼個散熱片。

比起以前更適合當 dashboard 之類的主機了?

第四堂:「Data Wrangling」

有陣子沒寫了,來還個債...

這個系列是從『MIT 的「The Missing Semester of Your CS Education」』這邊延伸出來的,這邊講的是「Data Wrangling」這篇。

這篇是在講 pipe 的用法,在講這些工具之前,其實有個很重要的概念應該要說明 (但沒有在這篇文章裡被提到),也就是 Unix philosophy,這個哲學是指 unix 環境下的工具,都會設計成只做好一件事情。

而要怎麼把這些工具串起來,最常見的就是 pipe,你可以在文章裡看到 grepsedsort 這些工具的用法,以及怎麼用 pipe 串起來。

這邊剛好也可以提一下,利用 pipe 可以把不同功能打散到不同的 process 上,剛好也可以稍微利用到現在常見的多 CPU 的環境。

另外上面因為提到了 grep,文章內花了不少篇幅在講 Regular expression 這個在 CS 課程裡面也是重要的基礎。

會放這種篇幅長度,一方面是 Regular expression 的實用性很高,另外一方面,學術上與自動機理論中的 DFANFA 都有關,算是學習計算理論的起點:

然後後面就有提到 AWK 這個工具,這邊要注意的是,雖然可以用 Perl 之類的工具作到類似的事情 (而且更強大),但 AWK 有被放到 POSIX 標準裡,所以在各種作業系統內幾乎都一定會出現,加上語法算是簡單,學起來還是很有幫助...

然後再最後面的段落冒出一個 gnuplot 畫個圖,以及示範 xargs 這種神器要怎麼用 (這邊會更建議看一下 manpage,可以配合 find 之類的工具用,並且平行化同時處理)。

然後最後示範了 binary data 怎麼處理。