Comfy Kitchen
Comfy Kitchen is a fast kernel library designed for ComfyUI, offering optimized computational primitives with support for multiple compute backends such as PyTorch, JAX, and CuPy. It provides low-level, high-performance operations for AI workloads, allowing users to leverage different hardware and frameworks. The current version is 0.2.8, and it appears to follow a rapid iteration release cadence, indicating active development.
Warnings
- gotcha Comfy Kitchen relies on optional backend dependencies (e.g., 'torch', 'jax', 'cupy') which must be installed separately using pip extra commands. Attempting to use a backend without its corresponding dependency will result in an `ImportError` or runtime errors.
- gotcha Before loading any kernels, you must explicitly set the desired compute backend using `K.set_backend("torch")` (or "jax", "cupy", etc.). The library does not default to a backend, and attempting to load kernels without this step will raise an error.
- gotcha Comfy Kitchen is a low-level kernel library providing optimized primitives. It is not a high-level wrapper for ComfyUI itself or a complete ComfyUI API client. Users might incorrectly assume it provides tools for general ComfyUI orchestration.
Install
-
pip install comfy-kitchen -
pip install comfy-kitchen[torch] -
pip install comfy-kitchen[jax] -
pip install comfy-kitchen[cupy]
Imports
- K
import comfy_kitchen.kernels as K
Quickstart
import comfy_kitchen.kernels as K
import os
# --- Important: Choose and install a backend first ---
# For this example, we default to 'torch'.
# Ensure you have installed the corresponding extra, e.g., `pip install comfy-kitchen[torch]`
try:
backend_choice = os.environ.get('COMFY_KITCHEN_BACKEND', 'torch')
K.set_backend(backend_choice)
print(f"Successfully set Comfy Kitchen backend to: {backend_choice}")
# List available kernels for the selected backend
available_kernels = K.list_kernels()
print(f"Available kernels for '{backend_choice}' backend: {', '.join(available_kernels)}")
# Attempt to load an example kernel (e.g., a diffusion related one)
kernel_name = "diffusion_forward" # Common kernel, but might vary per version/backend
if kernel_name in available_kernels:
kernel = K.load_kernel(kernel_name)
print(f"Loaded kernel: {kernel.name} from backend: {K.get_backend()}")
print(f"Kernel signature (expected inputs): {kernel.signature()}")
# A full example would involve preparing inputs as per kernel.signature()
# For demonstration, we just show successful loading and signature.
# Example: to use, you'd prepare tensors (e.g., torch.Tensor) matching the signature
# output = kernel.forward(*your_prepared_tensors_here)
print("Kernel is ready for execution with appropriate input tensors.")
else:
print(f"Kernel '{kernel_name}' not found for backend '{backend_choice}'.")
except ImportError as e:
print(f"ERROR: Failed to import a backend. Did you run `pip install comfy-kitchen[{backend_choice}]`? Details: {e}")
except Exception as e:
print(f"An error occurred during Comfy Kitchen setup or kernel loading: {e}")