模型 / 資料集
NX-AI/xlstm avatar
NX-AI/xlstm

xLSTM 官方實作:從 NeurIPS 論文架構到 7B 推論模型的兩條路線

Official repository of the xLSTM.

2,199 個 Star186 個 ForkPythonApache-2.0

秒懂

它是什麼?
NX-AI 的 xlstm 套件同時裝著兩套東西:NeurIPS 論文的 xLSTMBlockStack 與 xLSTMLMModel,以及為 7B 模型重寫的 xlstm/xlstm_large。兩者共用套件名稱,卻有不同依賴與硬體前提,選錯會卡在編譯或 kernel 上。
適合誰用?
如果你要的是可訓練、可微調的 7B 級別遞迴語言模型,而且手上是 NVIDIA 或 AMD GPU,xlstm 加上 mlstm_kernels 是目前唯一官方路徑,值得直接從 notebooks/xlstm_large/demo.ipynb 跑通再決定。若你的目標平台是 Apple Silicon 或不想引入 Triton 依賴,請走 native 設定或社群維護的 xLSTM-metal,不要硬上 TFLA kernel。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 8 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

這個套件裡其實住著兩個不同的 xLSTM

打開 NX-AI/xlstm 的 README,第一段講的是發表在 NeurIPS 的 xLSTM 架構:指數閘控搭配正規化與穩定化技巧,加上新的 Matrix Memory,用來突破原始 LSTM 的限制。第二段話鋒一轉,說他們在 2.3T token 上訓練了 7B 參數的 xLSTM 語言模型,並把這個最佳化後的架構稱為 xLSTM Large,程式碼放在 xlstm/xlstm_large。

這不是同一份程式碼的兩種叫法。README 明確寫著,xlstm_large 底下的 model.py 是 standalone 單檔實作,除了 mlstm_kernels 之外,對 NeurIPS 那套架構實作沒有任何依賴。也就是說 pip install xlstm 之後,你拿到的是兩條互不相干的技術路線:一條是論文原型,物件是 xLSTMBlockStack 與 xLSTMLMModel;另一條是為了訓練吞吐量與穩定性重新調過的 7B 模型,物件是 xLSTMLargeConfig 與 xLSTMLarge。

這個切分對讀者最實際的影響在於:你必須先決定自己要哪一個,再決定裝什麼。想重現論文、做非語言的序列建模、或把 xLSTM 區塊塞進別的架構裡,走 xLSTMBlockStack。想用現成權重做推論或微調,走 xlstm_large。兩邊的安裝步驟與硬體前提不一樣,混著看文件很容易在第一步就卡住。

xlstm_large 的三個 kernel 插槽決定你跑在哪張卡上

xlstm_large 的設定介面把運算拆成三種情境,各自對應一個 kernel 參數:chunkwise_kernel 負責分塊訓練路徑,sequence_kernel 負責整段序列的處理,step_kernel 負責逐 token 的推論步進。README 的示範把這三個分別設成 chunkwise--triton_xl_chunk、native_sequence__triton 與 triton,註解直接寫明 xl_chunk 等於 TFLA kernels。

這種設計的用意是讓同一份模型定義能在訓練與推論之間切換。示範裡的 mode 設為 inference,同時 return_last_states=True,對需要把遞迴狀態接續下去的場景有用。forward pass 的形狀檢查也寫在範例裡:輸入 (3, 256) 的整數張量,輸出形狀的第 1 軸之後等於 (256, 2048),2048 就是 vocab_size。

代價是這三個字串不是抽象設定,而是真的指向不同的底層實作。Triton 版本需要對應的硬體與編譯環境;一旦換平台,三個參數必須一起換掉,不能只改一個。README 對非 NVIDIA 平台給的建議就是把三個都改成 native 版本:chunkwise--native_autograd、native_sequence__native、native。這個切換是整組的,不是逐項最佳化。

安裝路徑:conda 環境、mlstm_kernels 與兩種安裝方式

README 給的建議環境是從 environment_pt240cu124.yaml 建立 conda 環境,指令是 conda env create -n xlstm -f environment_pt240cu124.yaml,之後 conda activate xlstm。套件本身基於 PyTorch,README 說測試涵蓋 >=1.8 的版本。

要跑 xLSTM Large 7B,必須先安裝 mlstm_kernels,指令是 pip install mlstm_kernels。README 說明這個套件提供 xLSTM 的快速 kernel,是 7B 模型的前置條件。之後才是安裝 xlstm 本體,兩種方式:pip install xlstm,或從 GitHub 取得原始碼後 pip install -e .。

如果你走的是 NeurIPS 論文那條路線並要用 sLSTM 的 CUDA kernel,README 列了額外條件:Compute Capability 需 >= 8.0。遇到編譯問題時,文件建議設定 export TORCH_CUDA_ARCH_LIST="8.0;8.6;9.0",這個寫法來自使用者 @zia1138 的回報。另外有 XLSTM_EXTRA_INCLUDE_PATHS 環境變數可以注入額外的 include 路徑,文件給的例子是 /usr/local/include/cuda/:/usr/include/cuda/,也可以在 Python 裡用 os.environ 設定。文件同時提醒 torch 與 CUDA 版本必須匹配。

這幾行是整份 README 最具體的部分,也是採用前最該先驗證的部分。尤其 TORCH_CUDA_ARCH_LIST 這種寫法意味著預設編譯行為在某些機器上不會自己找對架構。

Apple Silicon 與非 NVIDIA 平台:官方給的是降級路徑

README 對硬體的態度相當坦白:模型主要是在 NVIDIA GPU 上測試,Triton kernel 應該也能跑在 AMD GPU 上,但對 Apple Metal 這類平台,建議先使用原生 PyTorch 實作。所謂原生,就是把三個 kernel 參數全部換成不帶 Triton 的版本。

這是效能與可攜性的直接交換。Triton 路徑是為了速度存在的,關掉之後你得到的是能在更多平台上跑起來的版本,但 README 沒有給出任何具體的效能數字,也沒有說明降級後的吞吐量差距。文件只說「for now」,暗示這是暫時狀態。

對 Apple 生態的使用者,README 另外指向社群維護的 xLSTM-metal,位於 MLXPorts 組織底下,說明它提供 MLX 原生實作並以 Apple Silicon 為目標。這個專案不是 NX-AI 自己維護的,README 用 community-driven 描述它,採用時要把維護主體這件事算進去。

如果你的部署目標本來就不是 CUDA 機器,那麼 xlstm 官方套件能給你的就是一個可運作但未經最佳化的版本,外加一條指向外部專案的路。這一點在評估時不該被略過。

授權不是單一答案:套件 Apache-2.0,7B 權重另一套

repository 的授權標示是 Apache-2.0,README 的 badge 也指向同一個識別碼。對程式碼部分而言,這是相對寬鬆的選擇,商用與修改的空間都大。

但 7B 模型那一節的 badge 指向的是 nxai_community 授權,連結落在 NX-AI/tirex-internal 底下的 LICENSE 檔案。這表示程式碼與模型權重不是同一份授權條款。README 沒有在正文裡解釋 nxai_community 的具體內容,只留下一個 badge 連結。

這是採用前必須自己去看清楚的地方:你要用的是 xlstm 這個 Python 套件的程式碼,還是 Hugging Face 上的 xLSTM-7b 權重,兩者的授權來源不同。本文不提供法律意見,但把授權差異指出來是必要的,因為很多人看到 repository 標 Apache-2.0 就以為整包都一樣。

另外要留意 README 裡有一個 PyPI 下載量 badge 的連結指向 pepy.tech/projects/tirex-ts,與 xlstm 套件本身不一致,這看起來是文件撰寫時留下的痕跡,不影響功能,但說明這份 README 有拼裝的成分。

什麼情況下 xLSTM 不是你要的工具

xLSTM 的賣點是遞迴架構在推論上的效率,README 引用 7B 論文的標題就寫著 fast and efficient inference。但這個效率是綁在特定 kernel 上的。一旦你退回 native 實作,這個優勢是否還在,文件沒有給出可比較的數據。也就是說,在非 Triton 環境下,你拿到的是一個架構上有意思、但效能論述尚未被官方文件支撐的模型。

第二個限制來自依賴鏈。xlstm_large 需要 mlstm_kernels,這是另一個獨立套件,有它自己的版本節奏。README 沒有說明兩者的版本對應關係,只說 7B 模型需要它。對需要長期鎖定版本的生产環境,這代表升級 xlstm 時必須同步確認 mlstm_kernels 的相容性,而這個矩陣並未出現在文件裡。

第三,sLSTM 的 CUDA kernel 要求 Compute Capability >= 8.0。舊卡直接出局,而且 README 自己就提到編譯問題需要用 TORCH_CUDA_ARCH_LIST 手動介入。如果你的團隊不想在 CI 裡維護 CUDA 編譯環境,這條路會持續產生維運成本。

最後,README 被截斷在「xLSTM Bloc」這個標題上,後續關於 xLSTMBlockStack 與 xLSTMLMModel 的完整用法說明在本文可見的材料裡看不到。這部分要自行到 repository 補齊,不能只靠 README 判斷。

替代方案:FlashRNN 與 xLSTM-metal 各自解決不同問題

README 自己點名了兩個替代路徑,而且它們處理的是不同層次的問題。

第一個是 FlashRNN,位於 NX-AI/flashrnn。README 的定位是「standalone, even faster sLSTM kernels」,也就是在 sLSTM 這一層提供更快的獨立 kernel。差別在於整合方式:xLSTM 套件內的 sLSTM CUDA kernel 是跟著 PyTorch 擴充一起編譯的,而 FlashRNN 是另一套獨立函式庫。如果你只需要 sLSTM 的運算而不需要整個 xLSTM 模型堆疊,走 FlashRNN 可以避開套件整體的依賴,但代價是要自己接上層架構。

第二個是 xLSTM-metal,社群維護的 MLX 原生實作。它跟 FlashRNN 的差異更根本:不是換一組 kernel,而是換一整個執行框架,從 PyTorch 換到 Apple 的 MLX。這意味著模型定義、權重載入與推論流程都要跟著 MLX 生態走。好處是在 Apple Silicon 上不需要面對 Triton 與 CUDA 的缺席問題,壞處是它不在 NX-AI 的維護範圍內,官方 README 只提供連結。

如果你要的是在 NVIDIA GPU 上訓練 7B 級別的模型,這兩個替代方案都不適合,官方路徑仍然是 xlstm 加上 mlstm_kernels。替代方案解決的是平台與依賴問題,不是模型能力問題。

從 demo notebook 開始驗證,而不是從 README 開始相信

README 提供 notebooks/xlstm_large/demo.ipynb 作為 xLSTM Large 的快速入門。這個 notebook 做的事很明確:匯入 config 與 model 類別、初始化一個隨機權重的模型、跑一次 forward pass。它不涉及下載 7B 權重,也不涉及訓練,是一條純粹驗證環境是否裝對的最小路徑。

這件事的價值在於它把最容易出錯的環節獨立出來。kernel 字串能不能解析、mlstm_kernels 有沒有裝上、CUDA 環境對不對,這些問題在跑 demo 的時候就會暴露,不需要等到載入 7B 權重才發現。

驗證通過之後,下一個要確認的是版本相容性:environment_pt240cu124.yaml 對應的 PyTorch 與 CUDA 組合、mlstm_kernels 的版本、以及你的 GPU Compute Capability 是否落在 8.0 以上。README 對這些只給了片段線索,沒有完整的相容矩陣。

至於 xLSTMBlockStack 與 xLSTMLMModel 的用法,README 在可見範圍內只寫了它們各自的適用場景(非語言應用與語言建模),具體 API 需要到 repository 裡看。在文件補齊之前,把 xlstm_large 當成這個套件目前文件最完整、最值得先試的部分,是比較務實的判斷。

編輯結論

如果你要的是可訓練、可微調的 7B 級別遞迴語言模型,而且手上是 NVIDIA 或 AMD GPU,xlstm 加上 mlstm_kernels 是目前唯一官方路徑,值得直接從 notebooks/xlstm_large/demo.ipynb 跑通再決定。若你的目標平台是 Apple Silicon 或不想引入 Triton 依賴,請走 native 設定或社群維護的 xLSTM-metal,不要硬上 TFLA kernel。若你只需要論文架構做非語言任務的實驗,用 xLSTMBlockStack 即可,但要先確認 Compute Capability >= 8.0 並設好 TORCH_CUDA_ARCH_LIST,否則 sLSTM CUDA kernel 會編譯失敗。

官方來源

  1. License: Apache-2.0
  2. NX-AI/xlstm on GitHub
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記