CyxWiz LogoCyxWiz
DocsQuick Start

Quick Start Guide

Get CyxWiz up and running in minutes. This guide covers the fastest path to building and running all components.

5-Minute Setup

Prerequisites Check
# Check required tools
cmake --version      # 3.20+
git --version        # 2.0+
rustc --version      # 1.70+
python --version     # 3.8+
Clone and Build
# Clone repository
git clone https://github.com/CYXWIZ-Lab/CYXWIZ.git
cd CyxWiz

# Run setup script (installs dependencies)
./scripts/setup.sh    # Linux/macOS
# or
setup.bat             # Windows (Developer Command Prompt)

# Build everything
./scripts/build.sh    # Linux/macOS
# or
build.bat             # Windows
Run Components
# CyxWiz Engine (Desktop Client)
./build/linux-release/bin/cyxwiz-engine

# CyxWiz Server Node (Compute Worker)
./build/linux-release/bin/cyxwiz-server-node

# CyxWiz Central Server (Orchestrator)
cd cyxwiz-central-server && cargo run --release

Your First ML Model

Using the Node Editor
  1. Launch CyxWiz Engine
  2. Create New Project: File > New Project
  3. Open Node Editor: View > Node Editor
  4. Build a Simple Network:
[Data Input] → [Dense 784→128] →
[Dense 128→10] → [Model Output]
Using Python Scripting

Open the Console panel (View > Console) and try:

import cyxwiz as cyx

model = cyx.Sequential([
    cyx.layers.Dense(128, activation='relu',
                     input_shape=(784,)),
    cyx.layers.Dropout(0.2),
    cyx.layers.Dense(64, activation='relu'),
    cyx.layers.Dense(10, activation='softmax')
])

model.summary()

Project Structure

After creating a project, you'll have:

MyProject/
├── models/              # .cyxgraph files (node editor graphs)
├── scripts/             # Python scripts
├── data/                # Datasets
├── outputs/
│   ├── checkpoints/     # Model checkpoints
│   └── logs/            # Training logs
└── project.json         # Project configuration

Loading Data

From File
# CSV
data = cyx.datasets.load_csv('data/train.csv')

# Images from folder
train_data = cyx.datasets.ImageFolder(
    'data/images',
    transform=cyx.transforms.Compose([
        cyx.transforms.Resize(224),
        cyx.transforms.ToTensor(),
        cyx.transforms.Normalize(
            [0.485, 0.456, 0.406],
            [0.229, 0.224, 0.225]
        )
    ])
)
Built-in Datasets
# MNIST
(X_train, y_train), (X_test, y_test) = \
    cyx.datasets.mnist.load_data()

# CIFAR-10
(X_train, y_train), (X_test, y_test) = \
    cyx.datasets.cifar10.load_data()

# Fashion-MNIST
(X_train, y_train), (X_test, y_test) = \
    cyx.datasets.fashion_mnist.load_data()

Training a Model

# Compile model
model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

# Configure training
history = model.fit(
    X_train, y_train,
    epochs=10,
    batch_size=32,
    validation_data=(X_val, y_val),
    callbacks=[
        cyx.callbacks.EarlyStopping(patience=3),
        cyx.callbacks.ModelCheckpoint('best_model.h5', save_best_only=True),
        cyx.callbacks.TensorBoard(log_dir='./logs')
    ]
)

# Plot training history
cyx.plot.training_history(history)

Using GPU

import cyxwiz as cyx

# List devices
devices = cyx.device.list_devices()
for d in devices:
    print(f"{d.id}: {d.name} ({d.type})")

# Set device
cyx.device.set_device(0)  # First GPU

# Or by type
cyx.device.set_device('cuda', 0)

# Explicit device placement
with cyx.device.DeviceScope('cuda:0'):
    model.fit(X_train, y_train, epochs=10)

Saving and Loading

Models
# Save model
model.save('my_model.h5')

# Load model
model = cyx.load_model('my_model.h5')

# Save weights only
model.save_weights('weights.h5')
model.load_weights('weights.h5')
Node Editor Graphs
  • Save: File > Save or Ctrl+S
  • Load: File > Open or Ctrl+O
  • Export: File > Export > PyTorch/TensorFlow/Keras

Keyboard Shortcuts

Global
New ProjectCtrl+N
Open ProjectCtrl+O
SaveCtrl+S
UndoCtrl+Z
Command PaletteCtrl+Shift+P
Node Editor
Add NodeA
DeleteX
DuplicateD
Frame SelectedF
Quick SearchSpace
Console
ExecuteEnter
Execute SelectionCtrl+Enter
CancelCtrl+C
HistoryUp/Down

Common Tasks

Create CNN for Images
model = cyx.Sequential([
    cyx.layers.Conv2D(32, (3, 3),
        activation='relu',
        input_shape=(28, 28, 1)),
    cyx.layers.MaxPool2D((2, 2)),
    cyx.layers.Conv2D(64, (3, 3),
        activation='relu'),
    cyx.layers.MaxPool2D((2, 2)),
    cyx.layers.Flatten(),
    cyx.layers.Dense(64, activation='relu'),
    cyx.layers.Dense(10, activation='softmax')
])
Create RNN for Sequences
model = cyx.Sequential([
    cyx.layers.Embedding(10000, 128,
        input_length=100),
    cyx.layers.LSTM(64,
        return_sequences=True),
    cyx.layers.LSTM(32),
    cyx.layers.Dense(1, activation='sigmoid')
])

Troubleshooting

"CUDA not available"
# Check CUDA
print(cyx.device.cuda_available())

# Verify:
# 1. NVIDIA driver installed
# 2. CUDA toolkit installed
# 3. ArrayFire built with CUDA
"Out of memory"
# Reduce batch size
model.fit(X, y, batch_size=16)

# Clear cache
cyx.device.empty_cache()

# Use mixed precision
model.compile(..., mixed_precision=True)
"Module not found"
# Ensure Python bindings are built
cmake --build build/linux-release \
  --target pycyxwiz

# Add to PYTHONPATH
export PYTHONPATH=$PYTHONPATH:\
  ./build/linux-release/python

Next Steps

Explore Examples

Check examples/ folder for sample projects

Read Documentation

Full docs at docs.cyxwiz.com

Join Community

Discord server for help and discussion

Contribute

See Contributing Guide