blanchon's picture
Initial commit
ebcc4b8
# AI Compute System
This module provides a comprehensive AI compute management system for the LeRobot Arena frontend, integrating with the AI server backend for ACT model inference sessions.
## Architecture
The system follows the same pattern as the video and robot managers:
- **RemoteComputeManager**: Global manager for all AI compute instances
- **RemoteCompute**: Individual AI compute instance with reactive state
- **UI Components**: Modal dialogs and status displays for managing compute sessions
## Core Components
### RemoteComputeManager
The main manager class that handles:
- Creating and managing AI compute instances
- Communicating with the AI server backend
- Session lifecycle management (create, start, stop, delete)
- Health monitoring and status updates
```typescript
import { remoteComputeManager } from '$lib/elements/compute/';
// Create a new compute instance
const compute = remoteComputeManager.createCompute('my-compute', 'ACT Model');
// Create an AI session
await remoteComputeManager.createSession(compute.id, {
sessionId: 'my-session',
policyPath: './checkpoints/act_so101_beyond',
cameraNames: ['front', 'wrist'],
transportServerUrl: 'http://localhost:8000'
});
// Start inference
await remoteComputeManager.startSession(compute.id);
```
### RemoteCompute
Individual compute instances with reactive state:
```typescript
// Access compute properties
compute.hasSession // boolean - has an active session
compute.isRunning // boolean - session is running inference
compute.canStart // boolean - can start inference
compute.canStop // boolean - can stop inference
compute.statusInfo // status display information
```
## AI Server Integration
The system integrates with the AI server backend (`backend/ai-server/`) which provides:
- **ACT Model Inference**: Real-time robot control using Action Chunking Transformer models
- **Session Management**: Create, start, stop, and delete inference sessions
- **Transport Server Communication**: Dedicated rooms for camera inputs, joint inputs, and joint outputs
- **Multi-camera Support**: Support for multiple camera streams per session
### Session Workflow
1. **Create Session**: Establishes connection with AI server and creates transport server rooms
2. **Configure Inputs**: Sets up camera rooms and joint input rooms
3. **Start Inference**: Begins ACT model inference and joint command output
4. **Monitor Status**: Real-time status updates and performance metrics
5. **Stop/Delete**: Clean session teardown
## UI Components
### Modal Dialog
`AISessionConnectionModal.svelte` provides a comprehensive interface for:
- Creating new AI sessions with configurable parameters
- Managing existing sessions (start, stop, delete)
- Viewing session status and connection details
- Real-time session monitoring
### Status Display
The status system shows input/output connections:
- **Input Box**: Shows camera inputs and joint state inputs
- **Compute Box**: Shows AI model status and information
- **Output Box**: Shows joint command outputs
- **Connection Flow**: Visual representation of data flow
### 3D Integration
- Uses existing GPU 3D models for visual representation
- Interactive hover states and status billboards
- Positioned in 3D space alongside robots and videos
## Usage Example
```typescript
// 1. Create a compute instance
const compute = remoteComputeManager.createCompute();
// 2. Configure and create AI session
await remoteComputeManager.createSession(compute.id, {
sessionId: 'robot-control-01',
policyPath: './checkpoints/act_so101_beyond',
cameraNames: ['front', 'wrist', 'overhead'],
transportServerUrl: 'http://localhost:8000',
workspaceId: 'workspace-123'
});
// 3. Start inference
await remoteComputeManager.startSession(compute.id);
// 4. Monitor status
const status = await remoteComputeManager.getSessionStatus(compute.id);
console.log(status.stats.inference_count);
```
## Configuration
The system connects to:
- **Inference Server**: `http://localhost:8001` (configurable) - Runs AI models and inference sessions
- **Transport Server**: `http://localhost:8000` (configurable) - Manages communication rooms and data routing
## File Structure
```
compute/
β”œβ”€β”€ RemoteComputeManager.svelte.ts # Main manager class
β”œβ”€β”€ RemoteCompute.svelte.ts # Individual compute instance
β”œβ”€β”€ modal/
β”‚ └── AISessionConnectionModal.svelte # Session management modal
β”œβ”€β”€ status/
β”‚ β”œβ”€β”€ ComputeInputBoxUIKit.svelte # Input status display
β”‚ β”œβ”€β”€ ComputeOutputBoxUIKit.svelte # Output status display
β”‚ β”œβ”€β”€ ComputeBoxUIKit.svelte # Main compute display
β”‚ β”œβ”€β”€ ComputeConnectionFlowBoxUIKit.svelte # Connection flow
β”‚ └── ComputeStatusBillboard.svelte # 3D status billboard
└── index.ts # Module exports
```
## Integration Points
- **3D Scene**: `Computes.svelte` renders all compute instances
- **Add Button**: `AddAIButton.svelte` creates new compute instances
- **Main Page**: Integrated in the main workspace view
- **GPU Models**: Reuses existing GPU 3D models for visual consistency