mlx-tune: T2 whole-DiT mx.compile (same HY3D_MLX_COMPILE flag; parity 7.3e-06, 1.01x micro — GEMM-bound, kept as free insurance)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
4b368eef55
commit
5a322407f0
@ -16,6 +16,8 @@ import math
|
|||||||
import re
|
import re
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
import mlx.core as mx
|
import mlx.core as mx
|
||||||
import mlx.nn as nn
|
import mlx.nn as nn
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -513,6 +515,17 @@ class HunYuanDiTPlain(nn.Module):
|
|||||||
self.final_layer = FinalLayer(hidden_size, self.out_channels)
|
self.final_layer = FinalLayer(hidden_size, self.out_channels)
|
||||||
|
|
||||||
def __call__(self, x: mx.array, t: mx.array, contexts: dict, **kwargs) -> mx.array:
|
def __call__(self, x: mx.array, t: mx.array, contexts: dict, **kwargs) -> mx.array:
|
||||||
|
# HY3D_MLX_COMPILE=1: whole-DiT mx.compile — legal now that
|
||||||
|
# StaticMoELayer removed the data-dependent .item() skips (T3).
|
||||||
|
if os.environ.get("HY3D_MLX_COMPILE", "0") == "1":
|
||||||
|
fn = getattr(self, "_compiled_forward", None)
|
||||||
|
if fn is None:
|
||||||
|
fn = mx.compile(self._forward)
|
||||||
|
self._compiled_forward = fn
|
||||||
|
return fn(x, t, contexts, **kwargs)
|
||||||
|
return self._forward(x, t, contexts, **kwargs)
|
||||||
|
|
||||||
|
def _forward(self, x: mx.array, t: mx.array, contexts: dict, **kwargs) -> mx.array:
|
||||||
"""Forward pass.
|
"""Forward pass.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user