Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 34 additions & 9 deletions README_chs.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ TileGym 是一个 CUDA Tile 内核库,提供了丰富的基于 Tile 的 GPU

### 前置要求

> ⚠️ **重要提示**:TileGym 需要 **CUDA 13.1** 和 **NVIDIA Blackwell 架构 GPU**(如 B200、RTX 5080、RTX 5090)。我们将在未来支持其他 GPU 架构。请从 [NVIDIA CUDA 下载页面](https://developer.nvidia.com/cuda-downloads) 下载 CUDA。
> ⚠️ **重要提示**:TileGym 需要 **CUDA 13.1+** 和 **NVIDIA Blackwell 架构 GPU**(如 B200、RTX 5080、RTX 5090)。我们将在未来支持其他 GPU 架构。请从 [NVIDIA CUDA 下载页面](https://developer.nvidia.com/cuda-downloads) 下载 CUDA。

- PyTorch(版本 2.9.1 或兼容版本)
- **[CUDA 13.1](https://developer.nvidia.com/cuda-downloads)**(必需 - TileGym 仅在 CUDA 13.1 上构建和测试)
- **[CUDA 13.1+](https://developer.nvidia.com/cuda-downloads)**(必需 - TileGym 仅在 CUDA 13.1+ 上构建和测试)
- Triton(随 PyTorch 安装一起包含)

### 安装步骤
Expand All @@ -51,18 +51,43 @@ pip install --pre torch --index-url https://download.pytorch.org/whl/cu130

#### 2. 安装 TileGym

TileGym 使用 [`cuda-tile`](https://github.com/nvidia/cutile-python) 进行 GPU 内核编程,运行时依赖 `tileiras` 编译器。

##### 从 PyPI 安装(推荐)

```bash
pip install tilegym[tileiras]
```

这将安装 TileGym 及其所有运行时依赖,包括 `cuda-tile[tileiras]`,它会将 `tileiras` 编译器直接捆绑到您的 Python 环境中。

如果您的系统上已有 `tileiras`(例如来自 [CUDA Toolkit 13.1+](https://developer.nvidia.com/cuda-downloads)),可以省略附加选项:

```bash
pip install tilegym
```

##### 从源码安装

```bash
git clone <tilegym-repository-url>
cd tilegym
pip install -r requirements.txt
pip install .
git clone https://github.com/NVIDIA/TileGym.git
cd TileGym
pip install .[tileiras] # 或者: pip install . (如果您已有系统级 tileiras)
```

所有运行时依赖均声明在 [`requirements.txt`](requirements.txt) 中。运行 `pip install .` 也会自动安装这些依赖,但您也可以通过 `pip install -r requirements.txt` 预先显式安装。
如需可编辑(开发)模式,请使用 `pip install -e .` 或 `pip install -e .[tileiras]`。

##### 安装 `cuda-tile-experimental`

它将自动安装 `cuda-tile`,详见 https://github.com/nvidia/cutile-python。
> ⚠️ **必需**:TileGym 内核使用了 [`cuda-tile-experimental`](https://github.com/NVIDIA/cutile-python/tree/main/experimental) 中的功能(如自动调优器)。此包*不*在 PyPI 上提供,必须从源码单独安装:
>
> ```bash
> pip install "cuda-tile-experimental @ git+https://github.com/NVIDIA/cutile-python.git#subdirectory=experimental"
> ```
>
> `cuda-tile-experimental` 由 CUDA Tile 团队维护,仅提供源码安装。更多详情请参阅 [experimental-features-optional](https://github.com/NVIDIA/cutile-python?tab=readme-ov-file#experimental-features-optional)。

如果您希望以开发模式使用 `TileGym`,请运行 `pip install -e .`
所有运行时依赖(`cuda-tile-experimental` 除外)均声明在 [`requirements.txt`](requirements.txt) 中,通过 `pip install tilegym` 和 `pip install .` 都会自动安装。

我们还提供了 Dockerfile,您可以参考 [modeling/transformers/README.md](modeling/transformers/README.md)。

Expand Down
43 changes: 34 additions & 9 deletions README_cht.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ TileGym 是一個 CUDA Tile 核心函式庫,提供了豐富的基於 Tile 的

### 前置需求

> ⚠️ **重要提示**:TileGym 需要 **CUDA 13.1** 和 **NVIDIA Blackwell 架構 GPU**(如 B200、RTX 5080、RTX 5090)。我們將在未來支援其他 GPU 架構。請從 [NVIDIA CUDA 下載頁面](https://developer.nvidia.com/cuda-downloads) 下載 CUDA。
> ⚠️ **重要提示**:TileGym 需要 **CUDA 13.1+** 和 **NVIDIA Blackwell 架構 GPU**(如 B200、RTX 5080、RTX 5090)。我們將在未來支援其他 GPU 架構。請從 [NVIDIA CUDA 下載頁面](https://developer.nvidia.com/cuda-downloads) 下載 CUDA。

- PyTorch(版本 2.9.1 或相容版本)
- **[CUDA 13.1](https://developer.nvidia.com/cuda-downloads)**(必需 - TileGym 僅在 CUDA 13.1 上建構和測試)
- **[CUDA 13.1+](https://developer.nvidia.com/cuda-downloads)**(必需 - TileGym 僅在 CUDA 13.1+ 上建構和測試)
- Triton(隨 PyTorch 安裝一起包含)

### 安裝步驟
Expand All @@ -51,18 +51,43 @@ pip install --pre torch --index-url https://download.pytorch.org/whl/cu130

#### 2. 安裝 TileGym

TileGym 使用 [`cuda-tile`](https://github.com/nvidia/cutile-python) 進行 GPU 核心程式設計,執行時期依賴 `tileiras` 編譯器。

##### 從 PyPI 安裝(建議)

```bash
pip install tilegym[tileiras]
```

這將安裝 TileGym 及其所有執行時期依賴,包括 `cuda-tile[tileiras]`,它會將 `tileiras` 編譯器直接捆綁到您的 Python 環境中。

如果您的系統上已有 `tileiras`(例如來自 [CUDA Toolkit 13.1+](https://developer.nvidia.com/cuda-downloads)),可以省略附加選項:

```bash
pip install tilegym
```

##### 從原始碼安裝

```bash
git clone <tilegym-repository-url>
cd tilegym
pip install -r requirements.txt
pip install .
git clone https://github.com/NVIDIA/TileGym.git
cd TileGym
pip install .[tileiras] # 或者: pip install . (如果您已有系統級 tileiras)
```

所有執行時期依賴均宣告於 [`requirements.txt`](requirements.txt) 中。執行 `pip install .` 也會自動安裝這些依賴,但您也可以透過 `pip install -r requirements.txt` 預先顯式安裝。
如需可編輯(開發)模式,請使用 `pip install -e .` 或 `pip install -e .[tileiras]`。

##### 安裝 `cuda-tile-experimental`

它將自動安裝 `cuda-tile`,詳見 https://github.com/nvidia/cutile-python。
> ⚠️ **必需**:TileGym 核心使用了 [`cuda-tile-experimental`](https://github.com/NVIDIA/cutile-python/tree/main/experimental) 中的功能(如自動調優器)。此套件*不*在 PyPI 上提供,必須從原始碼單獨安裝:
>
> ```bash
> pip install "cuda-tile-experimental @ git+https://github.com/NVIDIA/cutile-python.git#subdirectory=experimental"
> ```
>
> `cuda-tile-experimental` 由 CUDA Tile 團隊維護,僅提供原始碼安裝。更多詳情請參閱 [experimental-features-optional](https://github.com/NVIDIA/cutile-python?tab=readme-ov-file#experimental-features-optional)。

如果您希望以開發模式使用 `TileGym`,請執行 `pip install -e .`
所有執行時期依賴(`cuda-tile-experimental` 除外)均宣告於 [`requirements.txt`](requirements.txt) 中,透過 `pip install tilegym` 和 `pip install .` 都會自動安裝。

我們還提供了 Dockerfile,您可以參考 [modeling/transformers/README.md](modeling/transformers/README.md)。

Expand Down
43 changes: 34 additions & 9 deletions README_fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ Ce dépôt vise à fournir des tutoriels et des exemples de noyaux utiles pour l

### Prérequis

> ⚠️ **Important** : TileGym nécessite **CUDA 13.1** et des **GPU d'architecture NVIDIA Blackwell** (par ex. B200, RTX 5080, RTX 5090). Nous prendrons en charge d'autres architectures GPU à l'avenir. Téléchargez CUDA depuis [Téléchargements NVIDIA CUDA](https://developer.nvidia.com/cuda-downloads).
> ⚠️ **Important** : TileGym nécessite **CUDA 13.1+** et des **GPU d'architecture NVIDIA Blackwell** (par ex. B200, RTX 5080, RTX 5090). Nous prendrons en charge d'autres architectures GPU à l'avenir. Téléchargez CUDA depuis [Téléchargements NVIDIA CUDA](https://developer.nvidia.com/cuda-downloads).

- PyTorch (version 2.9.1 ou compatible)
- **[CUDA 13.1](https://developer.nvidia.com/cuda-downloads)** (Requis - TileGym est construit et testé exclusivement sur CUDA 13.1)
- **[CUDA 13.1+](https://developer.nvidia.com/cuda-downloads)** (Requis - TileGym est construit et testé exclusivement sur CUDA 13.1+)
- Triton (inclus avec l'installation de PyTorch)

### Étapes d'installation
Expand All @@ -51,18 +51,43 @@ Nous avons vérifié que `torch==2.9.1` fonctionne. Vous pouvez également obten

#### 2. Installer TileGym

TileGym utilise [`cuda-tile`](https://github.com/nvidia/cutile-python) pour la programmation de noyaux GPU, qui dépend du compilateur `tileiras` à l'exécution.

##### Installer depuis PyPI (recommandé)

```bash
pip install tilegym[tileiras]
```

Ceci installe TileGym et toutes les dépendances d'exécution, y compris `cuda-tile[tileiras]` qui intègre le compilateur `tileiras` directement dans votre environnement Python.

Si `tileiras` est déjà disponible sur votre système (par ex. depuis [CUDA Toolkit 13.1+](https://developer.nvidia.com/cuda-downloads)), vous pouvez omettre l'extra :

```bash
pip install tilegym
```

##### Installer depuis les sources

```bash
git clone <tilegym-repository-url>
cd tilegym
pip install -r requirements.txt
pip install .
git clone https://github.com/NVIDIA/TileGym.git
cd TileGym
pip install .[tileiras] # ou : pip install . (si vous avez tileiras sur votre système)
```

Toutes les dépendances d'exécution sont déclarées dans [`requirements.txt`](requirements.txt). L'exécution de `pip install .` les installe également automatiquement, mais vous pouvez les pré-installer explicitement avec `pip install -r requirements.txt`.
Pour le mode éditable (développement), utilisez `pip install -e .` ou `pip install -e .[tileiras]`.

##### Installer `cuda-tile-experimental`

Cela installera automatiquement `cuda-tile`, voir https://github.com/nvidia/cutile-python.
> ⚠️ **Requis** : Les noyaux TileGym utilisent des fonctionnalités de [`cuda-tile-experimental`](https://github.com/NVIDIA/cutile-python/tree/main/experimental) (par ex. l'auto-tuner). Ce paquet n'est *pas* disponible sur PyPI et doit être installé séparément depuis les sources :
>
> ```bash
> pip install "cuda-tile-experimental @ git+https://github.com/NVIDIA/cutile-python.git#subdirectory=experimental"
> ```
>
> `cuda-tile-experimental` est maintenu par l'équipe CUDA Tile comme un paquet expérimental disponible uniquement depuis les sources. Voir plus de détails dans [experimental-features-optional](https://github.com/NVIDIA/cutile-python?tab=readme-ov-file#experimental-features-optional).

Si vous souhaitez utiliser le mode édition pour `TileGym`, exécutez `pip install -e .`
Toutes les dépendances d'exécution (sauf `cuda-tile-experimental`) sont déclarées dans [`requirements.txt`](requirements.txt) et sont installées automatiquement par `pip install tilegym` et `pip install .`.

Nous fournissons également un Dockerfile, vous pouvez consulter [modeling/transformers/README.md](modeling/transformers/README.md).

Expand Down
43 changes: 34 additions & 9 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ TileGym は、タイルベースの GPU プログラミングのための豊富

### 前提条件

> ⚠️ **重要**: TileGym には **CUDA 13.1** と **NVIDIA Blackwell アーキテクチャ GPU**(例:B200、RTX 5080、RTX 5090)が必要です。今後、他の GPU アーキテクチャもサポートする予定です。CUDA は [NVIDIA CUDA ダウンロード](https://developer.nvidia.com/cuda-downloads) からダウンロードしてください。
> ⚠️ **重要**: TileGym には **CUDA 13.1+** と **NVIDIA Blackwell アーキテクチャ GPU**(例:B200、RTX 5080、RTX 5090)が必要です。今後、他の GPU アーキテクチャもサポートする予定です。CUDA は [NVIDIA CUDA ダウンロード](https://developer.nvidia.com/cuda-downloads) からダウンロードしてください。

- PyTorch(バージョン 2.9.1 または互換バージョン)
- **[CUDA 13.1](https://developer.nvidia.com/cuda-downloads)**(必須 - TileGym は CUDA 13.1 でのみビルドおよびテストされています)
- **[CUDA 13.1+](https://developer.nvidia.com/cuda-downloads)**(必須 - TileGym は CUDA 13.1+ でのみビルドおよびテストされています)
- Triton(PyTorch のインストールに含まれます)

### セットアップ手順
Expand All @@ -51,18 +51,43 @@ pip install --pre torch --index-url https://download.pytorch.org/whl/cu130

#### 2. TileGym のインストール

TileGym は GPU カーネルプログラミングに [`cuda-tile`](https://github.com/nvidia/cutile-python) を使用しており、実行時に `tileiras` コンパイラに依存しています。

##### PyPI からインストール(推奨)

```bash
pip install tilegym[tileiras]
```

これにより、TileGym とすべてのランタイム依存関係がインストールされます。`cuda-tile[tileiras]` が含まれており、`tileiras` コンパイラが Python 環境に直接バンドルされます。

システムに `tileiras` が既にインストールされている場合(例:[CUDA Toolkit 13.1+](https://developer.nvidia.com/cuda-downloads) から)、追加オプションを省略できます:

```bash
pip install tilegym
```

##### ソースからインストール

```bash
git clone <tilegym-repository-url>
cd tilegym
pip install -r requirements.txt
pip install .
git clone https://github.com/NVIDIA/TileGym.git
cd TileGym
pip install .[tileiras] # または: pip install . (システムに tileiras がある場合)
```

すべてのランタイム依存関係は [`requirements.txt`](requirements.txt) に宣言されています。`pip install .` でも自動的にインストールされますが、`pip install -r requirements.txt` で事前に明示的にインストールすることもできます。
編集可能(開発)モードの場合は、`pip install -e .` または `pip install -e .[tileiras]` を使用してください。

##### `cuda-tile-experimental` のインストール

`cuda-tile` が自動的にインストールされます。詳細は https://github.com/nvidia/cutile-python をご覧ください。
> ⚠️ **必須**:TileGym カーネルは [`cuda-tile-experimental`](https://github.com/NVIDIA/cutile-python/tree/main/experimental) の機能(例:オートチューナー)を使用しています。このパッケージは PyPI では提供されて*おらず*、ソースから個別にインストールする必要があります:
>
> ```bash
> pip install "cuda-tile-experimental @ git+https://github.com/NVIDIA/cutile-python.git#subdirectory=experimental"
> ```
>
> `cuda-tile-experimental` は CUDA Tile チームによってソースのみの実験的パッケージとして管理されています。詳細は [experimental-features-optional](https://github.com/NVIDIA/cutile-python?tab=readme-ov-file#experimental-features-optional) をご覧ください。

`TileGym` を編集モードで使用する場合は、`pip install -e .` を実行してください
すべてのランタイム依存関係(`cuda-tile-experimental` を除く)は [`requirements.txt`](requirements.txt) に宣言されており、`pip install tilegym` と `pip install .` の両方で自動的にインストールされます

Dockerfile も提供しています。[modeling/transformers/README.md](modeling/transformers/README.md) を参照してください。

Expand Down
18 changes: 13 additions & 5 deletions modeling/transformers/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,14 @@ def __init__(self):
"_ct_intra_chunk_prepare_kernel",
# Partial RoPE kernel (Qwen3.5)
"rope_partial_kernel",
# Fused Qwen3.5 cuTile kernels
"_sigmoid_mul_kernel",
"_gdr_preprocess_kernel",
"_rms_norm_gated_silu_kernel",
"_causal_conv1d_update_silu_kernel",
"_silu_and_mul_separate_kernel",
"_causal_conv1d_prefill_silu_kernel",
"_residual_add_rms_norm_kernel",
# Reduce kernels
"splitk_reduce_kernel",
# GEMM kernels
Expand Down Expand Up @@ -527,8 +535,8 @@ def _compute_and_report_ratio(self, nsys_rep_path):

tilegym_time_pct = (tilegym_total_ns / all_total_ns * 100) if all_total_ns > 0 else 0
tilegym_count_pct = (tilegym_total_count / all_total_count * 100) if all_total_count > 0 else 0
time_ratio_str = f"{tilegym_time_pct:.1f}%"
count_ratio_str = f"{tilegym_count_pct:.1f}%"
time_ratio_str = f"{tilegym_time_pct:.2f}%"
count_ratio_str = f"{tilegym_count_pct:.2f}%"

if self.args.summary_file:
self._append_summary(time_ratio_str, count_ratio_str)
Expand Down Expand Up @@ -564,8 +572,8 @@ def _print_report(
print(row_fmt.format("TileGym Total", tilegym_total_count, tilegym_ms, tilegym_time_pct))
print(row_fmt.format("All Kernels Total", all_total_count, all_ms, 100.0))

time_ratio_str = f"{tilegym_time_pct:.1f}%"
count_ratio_str = f"{tilegym_count_pct:.1f}%"
time_ratio_str = f"{tilegym_time_pct:.2f}%"
count_ratio_str = f"{tilegym_count_pct:.2f}%"
print(f"\n>>> cuTile Kernel Coverage (GPU Time): {time_ratio_str} <<<")
print(f">>> cuTile Kernel Coverage (# Launches): {count_ratio_str} <<<\n")

Expand Down Expand Up @@ -698,7 +706,7 @@ def main():
print("\n===== GENERATED OUTPUTS =====")
for batch_idx, outputs in enumerate(outputs_list):
for i in range(outputs.shape[0]):
decoded_output = tokenizer.decode(outputs[i], skip_special_tokens=True)
decoded_output = tokenizer.decode(outputs[i][input_length:], skip_special_tokens=True)
print(f"\nBatch {batch_idx + 1}, Output {i + 1}:")
print(decoded_output)
print("-" * 50)
Expand Down
23 changes: 23 additions & 0 deletions src/tilegym/transformers/monkey_patch.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,29 @@ def apply_tilegym_kernel_to_qwen3(
modeling_qwen3_5.chunk_gated_delta_rule = tilegym_chunk_gated_delta_rule
modeling_qwen3_5.fused_recurrent_gated_delta_rule = tilegym_recurrent_gated_delta_rule

if use_cutile:
from tilegym.transformers.qwen3_5.modeling_qwen3_5 import Qwen3_5RMSNormGatedTileGym
from tilegym.transformers.qwen3_5.modeling_qwen3_5 import _attention_forward_tilegym
from tilegym.transformers.qwen3_5.modeling_qwen3_5 import _gated_delta_net_forward_tilegym
from tilegym.transformers.qwen3_5.modeling_qwen3_5 import causal_conv1d_update_silu_cutile

# Fused causal conv1d: set module-level so GatedDeltaNet.__init__ picks it up
modeling_qwen3_5.causal_conv1d_update = causal_conv1d_update_silu_cutile

# Fused RMSNormGated with SiLU gate
modeling_qwen3_5.Qwen3_5RMSNormGated = Qwen3_5RMSNormGatedTileGym

# Patch GatedDeltaNet forward for fused gate preprocessing
modeling_qwen3_5.Qwen3_5GatedDeltaNet.forward = _gated_delta_net_forward_tilegym

# Patch Attention forward for fused sigmoid gate
modeling_qwen3_5.Qwen3_5Attention.forward = _attention_forward_tilegym

# Patch DecoderLayer forward for fused residual add + RMSNorm
from tilegym.transformers.qwen3_5.modeling_qwen3_5 import _decoder_layer_forward_tilegym

modeling_qwen3_5.Qwen3_5DecoderLayer.forward = _decoder_layer_forward_tilegym


def apply_tilegym_kernel_to_gpt_oss(
rope: bool = True,
Expand Down
Loading