본문으로 건너뛰기
HY Devlog
뒤로 가기

ML-Agents 설치 문서 읽기: 파이썬 3.10.12는 권장이 아니라 상한이다

게임 개발 프로젝트에 온디바이스 AI를 넣으면서 Sentis를 붙여야 했고, 그걸 상세히 알아보다가 ML-Agents 툴킷 설치 문서를 스크랩해뒀었다. Sentis를 찾아보면 ML-Agents 자료가 같이 딸려 나오는데, ML-Agents가 Sentis를 쓰는 쪽이기 때문이다.

문서 자체는 Unity 설치 → Conda로 Python 환경 구성 → Unity 패키지 설치 → Python 패키지 설치 순서의 절차서다. 그냥 따라 하면 된다.

그런데 이 문서에는 “왜”가 거의 없다. 왜 하필 Conda인지, 왜 Python 3.10.12라는 세 자리 버전을 콕 집는지, 왜 설치 순서를 지키라고 하는지가 안 적혀 있다. 그리고 그 이유들이 설치가 실패하는 지점과 정확히 겹친다. 그래서 이유 쪽을 채워서 다시 정리했다.

목차

목차

이 툴킷이 두 조각인 이유

설치가 까다로운 근본 원인이 여기 있다. ML-Agents는 하나의 패키지가 아니다. 공식 매뉴얼의 표현이다.

The C# package does not contain the machine learning algorithms for training behaviors … The machine learning algorithms that orchestrate training are part of the companion Python package.

즉 이렇게 나뉜다.

학습 중에는 이 둘이 로컬 소켓으로 통신하면서 돈다. Unity가 관측을 보내면 Python이 행동을 돌려주는 구조다. 그래서 두 쪽의 버전이 맞아야 하고, 설치 과정이 Unity 패키지 매니저와 pip 두 군데로 갈린다. 문서가 “Unity ML-Agents 패키지 버전과 맞는 Python 패키지 버전을 설치하라”고 강조하는 게 이 때문이다.

파이썬 3.10.12는 권장이 아니라 상한이다

문서는 이렇게만 적는다.

Install Python 3.10.12 using Conda

왜 3.10.12인지는 없다. PyPI의 mlagents 패키지 메타데이터를 보면 답이 나온다.

Requires-Python: <=3.10.12, >=3.10.1

상한이 걸려 있다. 3.10.13도 안 되고 3.11은 당연히 안 된다. 요즘 파이썬 패키지에서 보기 드물게 좁은 범위다. 시스템에 깔린 파이썬이 3.11이나 3.12라면 pip install mlagents가 아예 거부된다.

문서가 Conda나 Mamba를 쓰라고 하는 이유도 이것이다. venv이미 설치된 파이썬 인터프리터로 가상환경을 만들 뿐이라, 3.10.12가 시스템에 없으면 만들 수가 없다. Conda는 인터프리터 자체를 원하는 버전으로 받아온다.

conda create -n mlagents python=3.10.12 && conda activate mlagents

이 한 줄이 이 문서에서 가장 중요한 줄이다. 여기를 건너뛰고 시스템 파이썬으로 진행하면 뒤의 모든 단계가 의미가 없다.

버전 짝 맞추기

문서가 링크만 걸어둔 부분을 실제 값으로 채우면 이렇다.

현재
최신 릴리스Release 23 (2025-09-02)
Unity 패키지com.unity.ml-agents 4.0.3
Python 패키지mlagents 1.1.0 (2024-10-05)
최소 Unity 버전6000.0 이상

여기서 눈에 띄는 게 하나 있다. Python 패키지가 2024년 10월에 멈춰 있다. Release 23이 2025년 9월에 나왔는데 PyPI의 mlagents는 그대로다. 그래서 문서의 pip install mlagents==1.1.0은 지금도 맞는 값이다.

릴리스 주기도 참고할 만하다. Release 19(2022-01) → 20(2022-11) → 21(2023-10) → 22(2024-10) → 23(2025-09)으로, 대략 연 1회다. 지금이 2026년 9월이니 Release 23이 나온 지 1년째인데, 이 주기에서는 아직 이례적이라고 보기 어렵다. 다만 빠르게 굴러가는 프로젝트를 기대하고 들어가면 안 된다는 정도는 알고 시작하는 게 낫다.

지금 기준으로 손볼 부분

스크랩본은 4.0 문서인데, 몇 가지가 이미 어긋난다.

패키지 버전. 문서 제목은 4.0.1인데 현재 Unity 패키지는 4.0.3이다.

Preview Packages 안내. 문서에 이런 단계가 있다.

Enable Preview Packages under the Advanced drop-down list if the package doesn’t appear.

현재 com.unity.ml-agents정식 릴리스 패키지로 올라와 있다. 이름으로 추가하면 그냥 잡히므로 이 단계는 보통 필요 없다. 옛 버전 문서에서 넘어온 안내로 보인다.

PyTorch 설치 줄. Windows용으로 이 명령을 준다.

pip3 install torch~=2.2.1 --index-url https://download.pytorch.org/whl/cu121

torch 2.2.1 + cu121은 2024년 초 기준 조합이다. 최신 GPU를 쓴다면 이 빌드가 그 아키텍처를 지원하지 않을 수 있으므로, 문서도 함께 안내하는 PyTorch 설치 페이지에서 내 GPU에 맞는 CUDA 버전을 직접 고르는 편이 안전하다. 다만 mlagents가 요구하는 torch 버전 범위를 벗어나면 안 되므로, 올릴 때는 한 번에 최신으로 가지 말고 확인하면서 올리는 게 맞다.

Sentis인가 Inference Engine인가

학습이 끝난 모델을 Unity 안에서 돌리는 부분에서 이름이 두 개로 나온다. ML-Agents 자체 문서 안에서도 갈린다.

그리고 현재 Unity의 추론 패키지는 com.unity.ai.inference 2.3.0이다. 문서 설명은 이렇다.

Inference Engine is a neural network inference library for Unity. It lets you import trained neural network models into Unity and run them in real-time with your target device’s compute resources, such as central processing unit (CPU) or graphics processing unit (GPU).

같은 것을 가리키는 두 이름이고, ML-Agents 문서에는 아직 옛 이름이 남아 있다. 자료를 찾을 때 Sentis로도 Inference Engine으로도 검색해봐야 한다는 뜻이다. 이 추론 계층이 실제로 무엇을 하는지는 Sentis의 텐서 데이터 접근에서 따로 정리했다.

여기서 구조가 하나 더 정리된다. 학습은 Python, 추론은 Unity다. 빌드에 파이썬이 따라 들어가지 않는다. 학습이 끝나면 .onnx 모델 파일만 남고, 게임은 그걸 Inference Engine으로 돌린다.

Sentis만 필요하다면 이 설치는 필요 없다

내가 이 문서에 닿은 경로가 그랬듯, Sentis를 찾다가 ML-Agents로 흘러오기 쉽다. 그런데 둘의 관계는 포함이지 대등이 아니다.

그러니 목적이 **“이미 있는 모델을 게임 안에서 돌리는 것”**이라면 com.unity.ai.inference 하나만 넣으면 되고, 이 문서의 Conda·PyTorch·Python 패키지는 전부 필요 없다. 반대로 **“게임 안에서 에이전트를 학습시키는 것”**이 목적일 때만 이 설치 절차가 의미가 있다.

Sentis 쪽 자료를 찾다가 ML-Agents 설치 문서가 나왔다면, 우선 어느 쪽이 필요한지부터 가르는 게 시간을 아낀다.

두 가지 설치 방식 중 무엇을 고를 것인가

문서는 두 갈래를 제시하는데, 기준이 하나로 정리된다. 예제 환경이 필요한가.

처음 배우는 입장이라면 사실상 Advanced가 기본이다. 3D Ball 같은 예제를 돌려보지 않고 관측·행동·보상 설계를 감으로 잡기는 어렵기 때문이다.

클론할 때 브랜치를 지정하는 이유도 문서에 있다.

git clone --branch release_23 https://github.com/Unity-Technologies/ml-agents.git

--branch를 빼면 develop이 받아지고, 여기에는 실험적이거나 불안정한 변경이 들어 있을 수 있다.

순서를 지켜야 하는 곳

Advanced 설치의 마지막에 문서가 굵게 강조하는 부분이 있다.

Install the packages in this order. The mlagents package depends on mlagents_envs. Installing them in the other order will download mlagents_envs from PyPi, which can cause version mismatches.

python -m pip install ./ml-agents-envs
python -m pip install ./ml-agents

순서를 바꾸면 조용히 잘못된 것이 설치된다. mlagents를 먼저 깔면 pip이 의존성인 mlagents_envs를 PyPI에서 받아오고, 그러면 방금 클론한 소스가 아니라 릴리스판이 들어간다. 소스를 고치려고 클론했는데 정작 다른 것이 도는 상황이다. 에러가 안 나기 때문에 알아채기 어렵다.

grpcio 우회도 같은 성격이다.

conda install "grpcio=1.48.2" -c conda-forge

휠 빌드가 실패할 때 conda-forge에서 미리 빌드된 것을 받아 끼우는 방식이다. 파이썬 버전이 좁게 묶여 있는 프로젝트에서 자주 나오는 패턴이다.

마지막으로 설치 확인은 이 한 줄이다.

mlagents-learn --help

파라미터 목록이 나오면 Python 쪽은 끝났다는 뜻이다.

정리

참고


이 글 공유하기:

이전 글
InputAction을 직접 구독하기: 델리게이트로 다루는 입력의 수명
다음 글
문자 인코딩 정리: 유니코드는 2바이트가 아니다