OpenAI 現在可以輸出定義的 JSON 了

OpenAI 在「Introducing Structured Outputs in the API」這邊提到目前的 JSON mode 不能保證 schema 的正確性:

While JSON mode improves model reliability for generating valid JSON outputs, it does not guarantee that the model’s response will conform to a particular schema.

而現在新的 model 可以了:

Today we’re introducing Structured Outputs in the API, a new feature designed to ensure model-generated outputs will exactly match JSON Schemas provided by developers.

新的 model 代碼是 gpt-4o-2024-08-06 這組,而且又降價了:

By switching to the new gpt-4o-2024-08-06, developers save 50% on inputs ($2.50/1M input tokens) and 33% on outputs ($10.00/1M output tokens) compared to gpt-4o-2024-05-13.

這個功能可以解掉不少 workaround...

Meta 的 Llama 3.1

Meta 發佈了 Llama 3.1:「Introducing Llama 3.1: Our most capable models to date」,這本來就只是個發佈而已,但讓我注意到的是 AWSGCP 都同時宣佈在雲端上支援 Llama 3.1 了:

這代表 Meta 在 Llama 3.1 發表前就先跟 AWS & GCP 合作了,這看起來是一個包圍 OpenAI (以及微軟) 的姿態,之前好像沒看到這樣?(單純印象...)

Mistral AI 與 NVIDIA 一起推出的 12B 開源模型 Mistral NeMo

如標題寫的,兩邊都有新聞稿:「Mistral NeMo」、「Mistral AI and NVIDIA Unveil Mistral NeMo 12B, a Cutting-Edge Enterprise AI Model」。

Mistral AI 這邊的新聞稿比較技術性一點,列出來的比較是拿 9B 的 Gemma 2 與 8B 的 Llama 3,整體看起來是還不錯:

裡面也有提到主要的特點是名為 Tekken 的 tokenizer 更有效率,不過這個部分我覺得聽聽帶過,畢竟 12B 還是比 9B 大了 1/3 左右,或是比 8B 大了 1/2 左右,優勢大不少,但看數據不知道導底是什麼地方貢獻的...

從 NVIDIA 這邊的新聞稿列出來的則比較合理,是透過硬體的觀點提到這個 12B model 可以跑在一張 4090 上 (24GB VRAM):

Designed to fit on the memory of a single NVIDIA L40S, NVIDIA GeForce RTX 4090 or NVIDIA RTX 4500 GPU, the Mistral NeMo NIM offers high efficiency, low compute cost, and enhanced security and privacy.

不過即使可以這樣跑,目前比較有效率的跑法應該是應該都會找 quantization 版本來跑,通常 model 會變小不少,而且損失應該也還在能接受的範圍。

常見的窮人跑法是拿 16GB VRAM 的 4060Ti 或是 12GB VRAM 的 3060,就看各種 tradeoff。

更重要的意義應該還是在這個區間又多了一個開源 model,而且是 NVIDIA 有出手掛名參與的?這陣子比較接近的應該是微軟的 Phi-3-medium-4k-instruct & Phi-3-medium-128k-instruct,大小是 14B。

用 2024 年的技術花 US$20 嘗試重建當年 OpenAI 的 GPT-2 (124M)

GPT-2 出來的 2019 年 Nvidia 的家用顯卡應該是 2080 Ti (2018/09/27),抓一下感覺。

在「Reproducing GPT-2 in llm.c (github.com/karpathy)」這邊看到 Andrej Karpathy 試著重建 GPT-2 的計畫,雖然是最小的 model (124M),不過這邊可以注意到當年最小是 117M,其實有一點差距 (大約多了 6%):

Two other smaller releases of GPT-2 are available, including the small version of 117M parameters and the medium size of 355M parameters. Both are available to download from Huggingface.

另外維基百科上面可以看到 OpenAI 發表 GPT-2 的時候他不在 OpenAI

OpenAI (2015–2017, 2023-2024)

但畢竟曾經是 OpenAI 裡面的老大,能看到的資料總是比外面的人多不少 (加上 GPT-2 屬於過時的技術,管制上應該會鬆不少?),這也是為什麼大家會關注的原因。

這次的嘗試不是完全重現,因為當初 GPT-2 的 training data 並沒有公開,所以他只能找個接近的 data set 訓練,這代表這次不是完全與 GPT-2 相同的情況下重建:

it was trained on the never released "WebText" dataset

雖然知道軟硬體的成長速度頗快 (畢竟整個產業的錢都往這邊丟進去),不過發現用現在的技術只要 US$20 就可以重現最小的 model 還是讓人有點驚訝:

With llm.c, which is quite efficient at up to ~60% model flops utilization, reproducing this model on one 8X A100 80GB SXM node takes ~90 minutes.

理論上同樣的 code 改一些參數也就可以訓練出比較大的幾個 model?

VMware Fusion Pro 開放個人免費使用?

Hacker News 上看到「VMware Fusion Pro: Now available free for personal use (vmware.com)」這篇,VMware 公告開放 Fusion Pro 個人免費使用:「VMware Fusion Pro: Now Available Free for Personal Use」。

不過 VMware 前陣子搞了一波 (先前有寫「Broadcom 在併購 VMware 後裁員」與「Proxmox 的 VMware 轉移方案」兩篇),已經有品牌信任度的問題了,逃的掉 + 想逃的人應該也都把替代方案研究的差不多 + 在執行了;而新的商業用戶應該也會考慮到品牌信任度的問題。

開放個人用戶免費使用比較像是重頭開始經營的感覺... 有點想到當初微軟在學校裡面用很低的價錢提供正版軟體 (Windows + Office),培養學生使用習慣,等他們出社會後,市場上就有很多人可以用,反過來影響到雇主端的選擇。

Vector embedding

最近累積起來的東西,都跟 vector embedding 有關,第二篇甚至有提到透過 embedding 切入可以找到不少 LLM 有趣的使用方式:

自己編 llama.cpp 的時候會產生出 embeeding 這隻程式,就可以測試把文字轉成 vector 的功能,接著就可以套用高維空間的數學運算了,像是最常被提到的是利用兩個 vector 的夾角來判斷相似度。

因為是對一堆 vector 處理,就不太需要去管輸出格式的問題 (像是 ChatGPT 會自由輸出任何東西),對程式開發上會方便不少...

用 Ollama 加上 ollama-ui (Chrome extension) 測試

ChatGPT 類的應用我最常還是拿來跑翻譯,有些東西不希望透過雲端去翻,試著找本機的方案跑看看。

因為桌機是 Linux 系統,目前比較成熟的方案看起來是 Ollama,可以在本地端跑起來並且開一個 HTTP API 讓其他程式呼叫。

我的作法是寫 systemd 設定,但是不要開機就跑起來,需要的時候再跑 sudo service ollama start 再使用就好,只是要注意第一次跑會需要從 NVMe disk 裡面讀 model,會比較慢一點,後續就正常了...

另外找了一下 GUI,看起來 ollama-ui 算是還 OK,兩個搭起來後拿 mistral-openorca 這組 7B model 跑翻譯,這邊是拿 NHK 網站上面的「政党支持率 自民下落20%台に 立民 維新も伸びず NHK世論調査」這篇翻,看起來還可以:

不過 7b 的幾個 model 測了一下都不到 GPT-3.5 的程度,要多跑幾次才會出現堪用的 (像上面那樣),之後再多測看看其他的 model...

AMD 推出 16GB 的 RX 7600 XT

看到「AMD Unveils AMD Radeon RX 7600 XT Graphics Card – Incredible Gaming at 1080p and Beyond for Under $350」這篇,16GB VRAM 官方的定價在 US$329...

剛好昨天寫的「Mixtral 8x7B 的論文出來了」提到了 Nvidia 的 3060 Ti 的 16GB 版本是跑 LLM 的窮人選擇,因為 12GB VRAM 的卡官方訂在 US$329,目前售價大約在 NT$9000 (~US$300) 左右。

這次 AMD 這張 16GB VRAM 美國定價是 US$329,剛好跟 3060 Ti 12GB 版本相同,這下 entry level 的市場就瞬間變得有趣了起來,雖然說 AMD 這邊的軟體支援度是差了一些,但最近算是急起直追,對於想要追求 CP 值的群眾來說還蠻有吸引力的?

後續來追看看台灣的售價...

Mixtral 8x7B 的論文出來了

Hacker News 上看到 Mixtral-8x7B-v0.1 以及 Mixtral-8x7B-Instruct-v0.1 的論文出來了:「Mixtral 8x7B: A sparse Mixture of Experts language model (arxiv.org)」,arXiv 上的連結:「Mixtral of Experts」。

跟先前大家從公開資料研究的差不多,這個研究成果主要不是降低參數的大小,而是降低運算的量:

As a result, each token has access to 47B parameters, but only uses 13B active parameters during inference.

然後仍然是超越 GPT-3.5 的水準:

Mixtral was trained with a context size of 32k tokens and it outperforms or matches Llama 2 70B and GPT-3.5 across all evaluated benchmarks.

先看計算量的問題,Mixtral 8x7B 的 model 對 VRAM 要求仍然不是消費級 GPU 可以達到的,對一般家用電腦來說,還是需要 quantisation 降低精度換取對 VRAM 空間的壓力下降。

這點可以在 TheBloke/Mixtral-8x7B-v0.1-GGUF 這邊看到各種 quantisation 後需要的 VRAM 大小。

如果用 CPU 計算的話目前應該不是大問題,目前 LLM 的大小對於一般主機的 RAM 來說還不是問題 (單條 32GB,四條就有 128GB 了),加上現在 llama.cpp 主力已經是用 mmap 的方式在存取檔案,filesystem cache 可以在多次執行中重複使用,只是用 CPU 就不能對速度有太多想法了。

但如果往 GPU 這邊看的話就得取捨了,目前 GPU 中能跑 Mixtral 8x7B 最便宜的方案應該是兩張 3060 12GB 組成 24GB VRAM,一張約 NT$9k (~US$300),兩張約 NT$18k (~US$600),這樣的話有機會跑 mixtral-8x7b-v0.1.Q3_K_M.gguf,不過這邊寫「very small, high quality loss」。

如果 mixtral-8x7b-v0.1.Q3_K_M.gguf 的品質不能接受,希望計算品質好一點的話,三張 3060 Ti 12GB 組 36GB VRAM 的方案約 NT$27000 (~US$900),不過主機板可能要挑一下;這樣就有機會用需求 34.73 GB VRAM 的 mixtral-8x7b-v0.1.Q5_K_M.gguf 了,評語是「large, very low quality loss - recommended」。

最後岔題,剛剛算了一下成本,發現 3060 Ti 12GB 這張還是穩穩的 LLM 窮人卡,先前在「雲端上面的 GPU 資源費用,以及地端的 GPU 決策圖」這邊提到的決策圖,即使在 2023 年七月 4060 Ti 16GB 出了以後還是很好用... (約 NT$15k,~US$500)

微軟 Phi-2 model 的授權改成 MIT License

Hacker News 的「Microsoft Phi-2 model changes licence to MIT (huggingface.co)」這邊看到的消息,連結是改成 MIT License 的 commit:「Upload 3 files · microsoft/phi-2 at 7e10f3e」。

看了一下 model 的參數是 2.7B,宣稱在 13B 以下 model 中是前段班:

Phi-2 showcased a nearly state-of-the-art performance among models with less than 13 billion parameters.

再回頭查一下這段宣稱的時間,當初發表的時間是 2023/12/12:「Phi-2: The surprising power of small language models」。

應該是希望在行動裝置上用更少的運算量達到效果...

另外找了一下 GGUF 格式,看起來 TheBloke/phi-2-GGUF 這邊已經有轉好的了,可以直接上 llama.cpp 跑。