<div align="center">
<img src="https://raw.githubusercontent.com/General-Instinct/InstinctFlash/HEAD/assets/iFlash.png" alt="InstinctFlash" width="360"/>
로봇 모델을 위한 고성능 서빙 프레임워크.
License
Website
YC
</div>
새로운 기능 🔥
- [2026/09/26] Jetson Thor용 목적 기반 엔진. FP8 pi05, LingBot-VLA, LingBot-VA 및 GR00T N1.7이 이제 퓨즈드 Triton 커널을 사용한 사용자 지정 엔진에서 작동하며, 보정(calibration) 패스나 네이티브 빌드가 필요하지 않습니다. Engines · Reproduce.
- [2026/09/17] RTX 5090 지원. Jetson Thor에서 사용된 것과 동일한 Runtime API를 사용하여 워크스테이션에 배포할 수 있습니다. Setup · Reproduce.
- [2026/09/16] RTX 4090 지원. 전용 설치 프로필을 통해 데스크톱 추론 및 WebSocket 서빙이 가능합니다. Setup · Reproduce.
- [2026/09/15] 전체 소스 공개. 여덟 가지 로봇 모델 패밀리, 가속화 커널, 그리고 단일 Runtime을 통한 Python / WebSocket 서빙이 가능합니다. Get started.
- [2026/09/15] Jetson Thor 벤치마크. FP8 및 적은 샘플링 단계(sampling steps)를 사용하여 LingBot-VA @2V/4A에서 최대 33.78배의 속도 향상을 달성했습니다. Results · Reproduce.
결과 (Results)
Prediction p50 on Jetson Thor (ms), 2026년 9월 15일 측정.
실제 로봇 테스트에서 작업 성능 저하가 관찰되지 않은 상태로 최대 33.78배의 속도 향상을 확인했습니다.
| Model | Acceleration line | PyTorch | InstinctFlash | Speedup |
|---|
| LingBot-VA | FP8 · 25V/50A | 15506.32 | 2891.74 | 5.36× |
| ... | | | | |
VA는 초기 연속(early continuations)을 측정합니다. 각 행은 동일한 스케줄을 비교합니다.
33.78배의 수치는 25V/50A → 2V/4A를 포함합니다.
FP8 및 샘플링 변경은 선택 사항입니다.
LingBot-VA, LingBot-VLA 및 pi05 FP8 행과 Cosmos3 Edge 행은 9월 15일에 InstinctFlash 자체 엔진 및 Triton 커널이 대체한 엔진과 커널로 측정되었습니다. 현재 소스에서 실행되는 클린 설치 검사는 이러한 모드를 실행하지만, 이 표의 측정값은 반복하지 않았습니다.
재현 명령어
설치 (Install)
git clone https://github.com/General-Instinct/InstinctFlash && cd InstinctFlash
python3 -m venv .venv-core
source .venv-core/bin/activate
...
Python 3.10+ 코어는 PyTorch나 GPU 없이 체크포인트와 플랜을 검사합니다. 추론(Inference)은 각 모델 패밀리별로 분리된 고정 환경(pinned environment)을 사용합니다. RTX 4090의 경우:
python3 scripts/bootstrap_vendor.py install pi05 --target rtx4090 \
--python python3.12 --root ~/ifl-pi05-4090 --ptxas /usr/local/cuda/bin/ptxas
source ~/ifl-pi05-4090/activate.sh
va, vla4, vla2, pi05, groot, edge, nano 또는 dreamzero를 사용하십시오.
Edge와 Nano는 Python 3.13을 사용하며, 다른 패밀리들은 Python 3.12를 사용합니다.
부트스트랩(bootstrap)은 업스트림 소스(upstream source), 호환성 패치, 코어 및 어댑터를 설치합니다. 모델 가중치는 별도로 다운로드해야 합니다. RTX 5090 설정, RTX 4090 설정 또는 Jetson Thor 설정을 참조하십시오. 이 중 --target jetson_thor를 선택합니다.
Thor FP8 엔진은 첫 사용 시 Python과 Triton으로 컴파일되며, 네이티브 빌드는 필요하지 않습니다.
모델 로드 (Load a model)
사용자가 미세 조정(fine-tuned)한 체크포인트 — 예상되는 경우입니다. serve를 학습 출력물에 지정하면; 해당 체크포인트 자체가 증명하는 내용을 바탕으로 패밀리를 감지하고 작은 instinctflash.json 선언문을 작성하며 서빙을 시작합니다. 단 하나의 명령어만 필요합니다:
instinctflash serve /path/to/your/checkpoint
체크포인트가 증명할 수 없는 것은 명시적으로 요청되며, 추측하지 않습니다. 선언문이 존재하는 경우(serve가 첫 실행 시 작성함), 동일한 디렉터리는 Python에서도 로드됩니다:
from instinctflash import Runtime
runtime = Runtime.from_pretrained("/path/to/your/checkpoint")
설치된 패밀리 환경에서 해당 Hub ID를 사용하십시오:
runtime = Runtime.from_pretrained("robbyant/lingbot-va-posttrain-robotwin")
| family | model id |
|:--|
| LingBot-VA (5B WAM) | robbyant/lingbot-va-posttrain-robotwin |
| ... |
파인튜닝(Fine-tune)은 해당 패밀리의 어댑터를 재사용하며, 품질은 체크포인트별로 평가됩니다.
동일한 Runtime은 기본적으로 BITEXACT 변환 천장(transformation ceiling)을 가진 precision="native"로 설정됩니다. 수치적 변경을 허용하려면 tier_ceiling="numeric"을 사용하거나, FP8을 명시적으로 활성화하려면 precision="fp8" (CLI: --fp8)를 사용하십시오. 스텝 스케줄은 별도로 선택됩니다.
자세한 내용은 정밀도 정책(precision policy)을 참조하십시오.
DreamZero의 선택적(opt-in) 동적 스텝 캐시(dynamic step cache)는 어떤 정밀도와 함께든 tier_ceiling="behavioral"을 요구합니다.
액션 가져오기
프로세스 내에서 (In process) — 전체 Python API입니다:
with runtime.episode(prompt="put the bottle in the dustbin") as episode:
while not done:
result = episode.predict(observation)
...
observation은 모델 고유 형식의 딕셔너리이며, result["action"]에는 해당 액션 배열이 포함되어 있습니다.
LingBot-VA의 경우, 컨트롤러가 예측된 액션 청크를 변경할 때 executed_action=...을 전달하여 다음 예측이 실제로 실행된 액션을 사용하도록 하십시오.
네트워크를 통해 (Over the network) — 위의 serve 명령어는 동일한 런타임을 pi0/openpi 생태계가 이미 사용하는 msgpack-over-websocket 와이어 프로토콜 뒤에 호스팅하므로, 기존 로봇 측 클라이언트는 변경 없이 연결할 수 있습니다 (pip install openpi-client):
from openpi_client.websocket_client_policy import WebsocketClientPolicy
client = WebsocketClientPolicy("my-server", 8000)
...
프롬프트는 observation 내에 포함됩니다. 프롬프트가 변경되면 새로운 에피소드가 시작되며, 클라이언트는 {"reset": True, ...}를 사용하여 이를 명시적으로 요청할 수 있습니다. 나머지 부분은 네 개의 플래그로 처리됩니다:
--serve.dry_run — 프리플라이트(preflight) 전용: 장치, 선언, 계획만 확인합니다. 가중치나 GPU는 사용하지 않습니다.
--serve.smoke — 로드 후 액션 1개를 생성하고 종료합니다.
--serve.seed — 쌍 비교를 위한 네이티브 실행 시드를 설정합니다. FP8 서빙에서는 이 옵션을 거부합니다.
--serve.viz — 관찰(observations), 액션(actions) 및 지연 시간(latency)을 Rerun 뷰어로 스트리밍합니다.
두 번째 동사인 instinctflash validate <dir>는 체크포인트가 게시 가능한지 확인하며, --validate.teacher_outcomes/.student_outcomes/.margin이 제공되면 비열등성(non-inferiority)을 인증하고 그 증명서를 패키지에 찍어줍니다.
벤치마크 가속 및 양자화 (Benchmark acceleration and quantization)
공급업체 및 보조 자산 준비를 마친 후, 포함된 입력값과 고정된 체크포인트 개정판을 사용하여 쌍별 이지(eager)/기본(default)/선택된 런타임 측정값을 재현합니다. Thor FP8 엔진은 네이티브 빌드가 필요 없습니다. 모델 및 자산 환경을 활성화 상태로 유지하십시오. RTX 4090의 경우:
python -I -m benchmarks.regression.reproduce prepare --target rtx4090 \
--model pi05 --mode fp8 --output pi05-inputs
python -I -m benchmarks.regression.reproduce run --prepared pi05-inputs --output pi05-results
...
run은 검사된 JSON/CSV 보고서와 전체 액션 배열을 작성합니다. serve_smoke는 두 에피소드에 걸쳐 실제 CLI 및 WebSocket 파이프라인을 테스트합니다. 기본 정밀도(default precision)를 사용하려면 --mode native를 사용하십시오. FP8, 수치 컴파일(numerical compilation), 변경된 스케줄은 명시적인 선택 사항입니다. 재현 가이드를 참조하십시오.
추가 프레임워크 비교를 위해서는 고정 비교 레시피를 사용하십시오.
instinctflash eval을 사용하여 원본 모델과 최적화된 모델을 비교합니다. 보고서는 별도의 지연 시간, 액션 일치도, 시뮬레이터 작업 성공률을 제공합니다.
instinctflash eval adapters
instinctflash eval coverage --run /path/to/run
instinctflash eval --registry plan.registry.json report --run /path/to/run
페어드(paired) LIBERO / RoboTwin 실험을 생성하고 실행하려면 평가 가이드를 참조하거나, 가속 및 양자화 프로토콜에 대한 벤치마크 세부 정보를 확인하십시오.
네이티브 자격 검증 워크플로우는 신규 시작 승인(fresh-start admission), 유지된 실패 기록(retained failures), 그리고 각 장치별 체크포인트 특정 증거를 추가합니다.
LingBot-VA 허브 ID는 네이티브 스텝 카운트(native step counts)를 유지하며, 2V/4A의 경우 명시적인 nfe 선택이 필요합니다.
공유된 BF16 융합(fusion)은 Triton으로 융합된 선형 레이어(linear) + ReLU²를 제공하며, Cosmos Edge용 선택적 NUMERIC 경로를 제공합니다.
공유 텐서 캐싱(tensor caching) 및 프리필 분리(prefill separation)는 네이티브 Cosmos 최적화를 Edge와 Nano까지 확장하며, 정확한 캐싱(exact caching)과 NUMERIC 컴파일은 별도의 옵션으로 남아 있습니다.
프레임워크 개요 (Framework overview)
InstinctFlash는 Python이나 명령줄에서 호출되든 상관없이 모델 선언(declarations), 최적화 계획(optimization planning), 런타임 실행(runtime execution), 그리고 증거를 하나의 검사 가능한 경로에 유지합니다.
아키텍처 (Architecture)
체크포인트는 자신이 무엇인지에 대한 짧은 선언을 담고 있습니다. 런타임은 이 선언을 읽고, 해당 가중치(weights)에 대해 증명 가능하게 유효한 최적화가 무엇인지 결정하고, 이를 적용하며, 그 과정을 보여줍니다:
checkpoint ─▶ adapter ─▶ planner ─▶ engine passes ─▶ actions
declares what decides what apply and measure
the model is is valid (no GPU, each optimization
...
최적화는 각각 무엇을 변경하는지에 따라 여섯 개의 계층으로 구성되어 있습니다:
| layer | | changes |
|---|
| 1 | 모델(MODEL) | 계산되는 것 — 추출(distillation), 단계 축소(step reduction), 체크포인트 압축(checkpoint compression) (InstinctCompress, instinct-pdd) |
| ... | | |
| Layer 1은 *가중치(weights)*를 변경하고 체크포인트(checkpoint)를 생성하며, 보조 레포지토리(companion repos)에 있습니다. 레이어 2~6은 *가중치가 어떻게 실행되는지(how the weights execute)*를 변경하고 계획(plan)을 생성합니다. 이들은 본 리포지토리의 런타임입니다. 이 레이어들은 우선순위 순서가 아니며, 런타임은 시간이 실제로 어디에 쓰이는지 측정하여 그곳부터 시작합니다. | | |
모델 추가하기 (Add a model)
자체 모델 패밀리를 추가하려면, instinctflash.adapters 진입점(entry point)을 선언하고 패키지를 pip install해야 합니다. 자세한 내용은 examples/external_plugin/를 참조하세요.
로드맵 (Roadmap)
감사의 말씀 (Acknowledgements)
InstinctFlash는 다음 프로젝트와 기여자들로부터 제공받은 코드, 모델, 도구, 그리고 아이디어를 기반으로 구축되었습니다. 이에 깊이 감사드립니다.