본문 바로가기

MuJoCo·LeRobot 설치, 어떤 버전으로 맞춰야 할까: OS별 공식 요구사항과 GPU 없을 때 대안

MuJoCo 3.16.0과 LeRobot 0.6.1의 공식 요구사항을 기준으로 Python 3.12 환경을 만들고, OS별 휠 지원, CUDA 드라이버 하한, 헤드리스 렌더링(MUJOCO_GL), GPU가 없을 때의 대안까지 설치 순서대로 정리합니다.

목차

핵심 요약

  1. MuJoCo 3.16.0은 Python 3.10 이상, LeRobot 0.6.1은 Python 3.12 이상을 요구하므로 둘을 함께 쓰려면 Python 3.12 가상환경이 가장 단순한 공통 분모다.
  2. MuJoCo 3.16.0의 macOS 휠은 arm64용만 올라와 있어 Intel Mac에서는 미리 빌드된 휠을 받을 수 없다.
  3. Linux에서 PyPI 기본 torch 휠은 CUDA 13.0 기반이라 NVIDIA 드라이버 580.65 이상이 필요하고, 드라이버가 낮으면 cu128(570.86 이상)이나 cu126 인덱스로 torch를 먼저 설치한다.
  4. 디스플레이가 없는 서버에서는 MUJOCO_GL=egl(GPU)이나 osmesa(CPU 소프트웨어 렌더링)를 지정해야 하며, glfw는 헤드리스 환경에서 동작하지 않는다.
  5. GPU가 없으면 CPU·Apple MPS·Colab을 쓸 수 있지만, Colab 무료 버전은 세션이 최대 12시간이고 사용 한도와 GPU 종류가 공개·보장되지 않는다.

로봇 시뮬레이션과 모방학습을 처음 시작할 때 가장 먼저 막히는 곳은 모델이 아니라 설치입니다. MuJoCo와 LeRobot은 요구하는 Python 버전이 다르고, PyTorch의 CUDA 빌드와 그래픽 드라이버, 렌더링 백엔드까지 맞물려 있어서 한 군데만 어긋나도 import 단계에서 멈춥니다. 이 글은 2026년 10월 22일 기준 공식 문서와 PyPI 릴리스 정보만으로 두 패키지를 한 가상환경에 설치하는 순서를 정리합니다. 읽고 나면 자신의 OS와 GPU에서 어떤 조합을 골라야 하는지, 설치 후 무엇으로 확인하는지 판단할 수 있습니다.

시뮬레이터를 아직 고르지 않았다면 MuJoCo·Isaac Lab·PyBullet·Genesis 비교를 먼저 보고 오는 편이 좋습니다.

두 패키지가 요구하는 버전부터 맞춘다

PyPI의 mujoco 페이지를 보면 최신 릴리스는 2026년 10월 14일에 올라온 3.16.0이고, Requires-Python은 3.10 이상입니다. PyPI의 lerobot 페이지의 최신 릴리스는 2026년 8월 3일의 0.6.1이며 Python 3.12 이상을 요구하고, 의존성으로 torch>=2.7,<2.12를 지정합니다. 두 조건을 동시에 만족하는 가장 낮은 버전이 3.12이므로 이 글은 Python 3.12를 기준으로 합니다.

항목MuJoCo 3.16.0LeRobot 0.6.1
Python3.10 이상 (3.10~3.15 휠 제공)3.12 이상
Linuxx86_64·aarch64 휠 (manylinux_2_27/2_28)aarch64에서는 TorchCodec 미지원 → pyav로 자동 대체
macOSarm64 휠만 제공 (macOS 11 이상)Apple silicon은 MPS 사용, Intel Mac은 TorchCodec 미지원
Windowswin_amd64 휠PyTorch 2.8 미만이면 TorchCodec 미지원
PyTorch의존하지 않음torch>=2.7,<2.12

이 표는 각 패키지의 릴리스 파일 목록과 LeRobot 설치 문서의 플랫폼 안내를 옮긴 것입니다. MuJoCo 휠에는 MuJoCo 라이브러리가 함께 들어 있어서, MuJoCo Python 문서대로 pip install mujoco 한 줄이면 별도 바이너리를 내려받지 않아도 됩니다. 반대로 3.16.0의 macOS 휠은 arm64용뿐이라 Intel Mac에서는 소스 빌드가 필요해집니다.

Linux에서 CUDA 드라이버와 torch 빌드 맞추기

GPU 학습을 할 계획이라면 설치 전에 nvidia-smi로 드라이버 버전을 확인합니다. LeRobot 설치 문서에 따르면 Linux에서 PyPI 기본 torch 휠은 CUDA 13.0 기반이고 드라이버 하한이 580.65입니다. 드라이버가 그보다 낮으면 lerobot보다 torch를 먼저, 인덱스를 지정해 설치해야 합니다.

torch 인덱스드라이버 하한 (문서 기준)언제 고르나
PyPI 기본 (cu130)580.65최신 드라이버, 별도 지정 없이 설치할 때
cu128570.86Ampere·Ada·Hopper·Blackwell에서 드라이버가 580 미만일 때
cu126문서에 “older drivers"로만 표기그보다 오래된 드라이버

macOS와 Windows는 PyPI 기본 휠(각각 MPS, CUDA-Windows 빌드)을 그대로 쓰므로 이 단계를 건너뜁니다.

설치 순서: 가상환경부터 확인 스크립트까지

아래 순서는 conda(miniforge)를 기준으로 합니다. LeRobot 문서가 권장하는 방식이고, ffmpeg를 conda-forge에서 받을 수 있어 PyTorch 버전과 관계없이 동작합니다.

  1. Python 3.12 가상환경을 만들고 활성화합니다.
  2. Linux NVIDIA 환경이면 드라이버에 맞는 인덱스로 torch를 먼저 설치합니다.
  3. TorchCodec 지원 플랫폼이면 conda-forge에서 ffmpeg를 설치합니다. Intel Mac, Linux ARM은 pyav로 자동 대체되므로 생략해도 됩니다.
  4. LeRobot을 필요한 extra와 함께 설치하고, MuJoCo를 설치합니다.
  5. 확인 스크립트로 세 패키지와 가속기 상태를 한 번에 점검합니다.
conda create -y -n physai python=3.12
conda activate physai

# (Linux + NVIDIA, 드라이버 580.65 미만일 때만) torch를 먼저 지정 설치
pip install --index-url https://download.pytorch.org/whl/cu128 torch torchvision

conda install ffmpeg -c conda-forge
pip install 'lerobot[training]' mujoco

WSL 안에 설치한다면 문서 안내대로 conda install evdev -c conda-forge를 추가합니다. lerobot 기본 패키지는 의도적으로 가볍게 구성돼 있어서, 녹화·캘리브레이션은 core_scripts, 학습은 training, SmolVLA는 smolvla, Pi0 계열은 pi extra를 따로 붙여야 합니다.

설치가 끝나면 다음 스크립트를 check_env.py로 저장해 실행합니다.

from importlib.metadata import version

import mujoco
import torch

xml = """
<mujoco>
  <worldbody>
    <body pos="0 0 1">
      <freejoint/>
      <geom type="box" size=".05 .05 .05"/>
    </body>
  </worldbody>
</mujoco>
"""
m = mujoco.MjModel.from_xml_string(xml)
d = mujoco.MjData(m)
for _ in range(200):
    mujoco.mj_step(m, d)

print("mujoco", mujoco.__version__, "box z:", round(float(d.qpos[2]), 3))
print("lerobot", version("lerobot"))
print("torch", torch.__version__,
      "cuda:", torch.cuda.is_available(),
      "mps:", torch.backends.mps.is_available())

상자의 높이 z가 시작값 1보다 작게 나오면 중력이 적용돼 물리 스텝이 돈 것입니다. cuda와 mps 중 자신의 장비에 해당하는 값이 True인지 확인합니다.

화면 없는 서버에서 렌더링 백엔드 고르기

MuJoCo의 OpenGL 렌더링은 세 가지 백엔드 중 하나로 동작합니다. dm_control README는 기본 시도 순서를 GLFW → EGL → OSMesa로 설명하고, MUJOCO_GL 환경 변수로 하나를 고정할 수 있다고 안내합니다.

MUJOCO_GL방식필요 조건맞는 환경
glfw창 기반, 하드웨어 가속디스플레이, GLFW·GLEW로컬 데스크톱, 뷰어 사용
egl헤드리스, 하드웨어 가속EXT_platform_device를 지원하는 드라이버 (최신 NVIDIA 드라이버)GPU 서버, 클라우드 학습
osmesa헤드리스, 소프트웨어 렌더링GLX·OSMesa 라이브러리GPU 없는 서버 (느림)

GPU가 여러 장이면 MUJOCO_EGL_DEVICE_ID로 렌더링에 쓸 GPU를 고릅니다. 백엔드가 제대로 잡혔는지는 MuJoCo Python 문서가 오프스크린 렌더링용으로 설명하는 mujoco.GLContext를 만들어 보면 바로 알 수 있습니다.

export MUJOCO_GL=egl
python -c "import mujoco; ctx = mujoco.GLContext(640, 480); ctx.make_current(); print('GL context OK')"

반대로 로컬 macOS에서 대화형 뷰어를 쓸 때는 다른 문제가 생깁니다. 문서에 따르면 mujoco.viewer.launch_passive는 macOS에서 mjpython 런처로 실행해야 하며, mjpython은 mujoco 패키지에 함께 설치됩니다. python my_script.py 대신 mjpython my_script.py로 실행하면 됩니다.

GPU가 없을 때 선택지와 한계

GPU가 없어도 설치와 시뮬레이션 자체는 가능합니다. MuJoCo 물리 계산은 CPU에서 돌고, 위의 확인 스크립트도 GPU 없이 끝납니다. 막히는 지점은 정책 학습입니다.

선택지할 수 있는 것한계
CPU만설치, 시뮬레이션, 데이터셋 확인, 작은 정책의 짧은 학습이미지 정책 학습은 GPU 대비 매우 느림
Apple silicon (MPS)policy.device=mps로 학습·추론CUDA 전용 커널이 필요한 기능은 쓸 수 없음
Google Colab 무료브라우저에서 GPU 학습 노트북 실행세션 최대 12시간, GPU 종류·사용 한도 비공개

Colab FAQ는 무료 버전 노트북이 최대 12시간까지 실행될 수 있지만 가용성과 사용 패턴에 따라 달라지고, 사용 한도는 변동하며 공개하지 않는다고 밝힙니다. 그래서 Colab에서 학습할 때는 체크포인트를 자주 Hugging Face Hub나 Drive에 저장해 세션이 끊겨도 이어서 학습할 수 있게 해 둡니다. LeRobot은 ACT와 SmolVLA의 Colab 학습 노트북 링크를 각 문서에서 제공합니다.

학습에 GPU 메모리가 얼마나 필요한지는 모델마다 크게 다릅니다. SmolVLA 기준 계산은 SmolVLA 파인튜닝 VRAM 계산법에서 따로 다룹니다.

환경을 다시 만들 수 있게 고정해 두는 방법

설치가 한 번 성공하면 버전을 파일로 남겨 두는 것이 다음 문제를 막는 가장 싼 방법입니다. 아래 environment.yml은 이 글의 기준 버전을 고정한 예시입니다.

name: physai
channels:
  - conda-forge
dependencies:
  - python=3.12
  - ffmpeg
  - pip
  - pip:
      - mujoco==3.16.0
      - lerobot[training]==0.6.1

Linux에서 torch 인덱스를 따로 지정했다면 conda env create -f environment.yml 전에 같은 인덱스로 torch를 먼저 설치하는 단계를 README에 함께 적어 둡니다. 실제로 설치된 전체 목록은 pip freeze > requirements.lock.txt로 저장하면 동료 장비에서 같은 조합을 재현할 수 있습니다.

설치가 안 될 때 증상별로 먼저 볼 곳

증상원인먼저 할 일
lerobot 설치 시 Python 버전 조건 오류Python 3.10·3.11 환경Python 3.12 가상환경을 새로 만든다
torch.cuda.is_available()가 False드라이버가 기본 휠(cu130) 하한보다 낮음cu128·cu126 인덱스로 torch 재설치
PyAV 빌드 오류ffmpeg 개발 라이브러리 누락문서의 apt-get install cmake build-essential ... libavformat-dev 목록 설치
헤드리스 서버에서 GLFW 관련 오류기본 순서의 glfw가 디스플레이를 찾음MUJOCO_GL=egl 지정
EGL 초기화 실패드라이버의 EGL 장치 확장 미지원, GPU 접근 불가드라이버 확인, 임시로 MUJOCO_GL=osmesa
macOS 뷰어 실행 오류launch_passive를 python으로 실행mjpython으로 실행

설치가 끝났다면 LeRobot으로 SO-101 데이터 수집과 ACT 학습으로 바로 넘어가 데이터 파이프라인을 확인할 수 있습니다. 데이터 양에 따라 어떤 정책 모델로 시작할지는 ACT·Diffusion Policy·VLA 선택 기준에서 이어집니다.

자주 하는 실수

  • 시스템 기본 Python(3.10·3.11)에 그대로 설치해 LeRobot이 Python 버전 조건 때문에 설치되지 않는 경우
  • Linux에서 torch를 따로 지정하지 않고 lerobot을 설치했는데 드라이버가 580.65보다 낮아 torch.cuda.is_available()이 False로 나오는 경우
  • 원격 서버에서 MUJOCO_GL을 지정하지 않아 기본 순서의 첫 번째인 glfw가 디스플레이를 찾다 실패하는 경우
  • macOS에서 mujoco.viewer.launch_passive를 python으로 실행해 오류가 나는 경우 — mjpython으로 실행해야 한다.

적용 전 체크리스트

  • python –version 결과가 3.12.x인 가상환경 안에서 설치하는가
  • Linux NVIDIA 환경이면 nvidia-smi의 드라이버 버전과 고른 torch 인덱스(cu126·cu128·cu130)의 하한이 맞는가
  • TorchCodec 지원 플랫폼이면 ffmpeg를 conda-forge로 설치했는가
  • 헤드리스 서버라면 MUJOCO_GL 값을 셸 또는 conda 환경 변수로 고정했는가
  • 확인 스크립트에서 mujoco·torch·lerobot 버전과 CUDA/MPS 사용 가능 여부가 모두 기대값으로 나오는가

자주 묻는 질문

uv로 설치해도 되나요?
LeRobot 설치 문서는 uv도 안내합니다. 다만 시스템 ffmpeg를 TorchCodec이 동적으로 링크하는 방식은 PyTorch 2.10 이상(TorchCodec 0.10 이상)에서만 지원되므로, 그보다 낮은 PyTorch를 쓴다면 conda-forge의 ffmpeg를 써야 합니다.
MuJoCo를 소스에서 빌드해야 하는 경우는 언제인가요?
공식 휠이 없는 플랫폼이거나 MuJoCo 자체를 수정해야 할 때입니다. MuJoCo 문서는 소스 빌드에 CMake와 C++17 컴파일러, MuJoCo 라이브러리 빌드 또는 바이너리 릴리스, MUJOCO_PATH 환경 변수가 필요하다고 안내합니다.
Windows에서 WSL2와 네이티브 중 어느 쪽이 낫나요?
MuJoCo 3.16.0은 win_amd64 휠이 있어 네이티브 설치가 가능합니다. LeRobot 문서는 WSL 안에 설치할 때 evdev를 추가로 설치하라고 안내하므로, 실물 로봇 입력 장치를 쓸 계획이면 그 차이를 함께 고려합니다.

참고 자료 · 검증 기준

  1. PyPI — mujoco (3.16.0 릴리스 파일·Requires-Python)
  2. MuJoCo Documentation — Python Bindings
  3. Hugging Face LeRobot Docs — Installation
  4. PyPI — lerobot (0.6.1 Requires-Python·의존성)
  5. Google DeepMind dm_control README — Rendering (MUJOCO_GL)
  6. Google Colab FAQ — 무료 버전 리소스 한도

마지막 검증일: