[유니티(Unity)] (ML Agent) 시작

728x90

개요

Unity Machine Learning Agents (ML-Agents)

Unity ML-Agents Toolkit은 게임과 시뮬레이션에서 AI 에이전트를 훈련할 수 있는 오픈소스 도구입니다. PyTorch 기반의 알고리즘을 사용하여 2D, 3D, VR/AR 게임을 위한 지능형 에이전트를 훈련할 수 있습니다.

주요 용도:

  • NPC 행동 제어
  • 게임 빌드 자동화 테스트
  • 게임 레벨 디자인 평가

참고 : 🔗 ML-Agents Official Documentation

ML Agent DEMO 영상

 

위 설명에서 봤듯이, ML-Agents는 Unity에서 제공하는 강화 학습 패키지입니다.

이 페이지에서는 ML-Agents의 설치부터 적용 방법까지 다루며, 예제를 통해 학습하는 과정을 살펴보겠습니다.

설치

 

ML-Agents를 사용하려면 Python과 Unity 환경을 설정해야 합니다. 여기서는 간단히 설치 과정을 소개하고, 자세한 내용은 별도의 페이지에서 다루겠습니다.

참고 : 🔗 ML-Agents Installation Guide

 

Installation - Unity ML-Agents Toolkit

Installation The ML-Agents Toolkit contains several components: Unity package (com.unity.ml-agents) contains the Unity C# SDK that will be integrated into your Unity project. This package contains a sample to help you get started with ML-Agents. Unity pack

unity-technologies.github.io

 

1. Conda 설치 및 Python 환경 설정

Conda를 설치한 후, 가상 환경을 생성해야 합니다. 설치 페이지를 참고하여 알맞은 Python 버전을 선택하세요. 현재 권장되는 버전은 Python 3.10.12입니다.

아래 명령어를 실행하여 가상 환경을 생성하고 활성화할 수 있습니다.

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

 

2. ML-Agents Unity 패키지 설치

Unity 패키지 매니저를 사용하여 ML-Agents 패키지를 설치할 수 있습니다.

  1. Unity Package Manager 열기
  2. "com.unity.ml-agents" 패키지를 검색
  3. 설치 후 프로젝트에 적용

설치가 완료되면 ML-Agents를 Unity에서 사용할 준비가 완료됩니다.

 

3. ML-Agents Python 패키지 설치

ML-Agents를 설치하려면 Python 패키지 및 종속성을 올바르게 설정해야 합니다. 가상 환경을 사용하는 것이 권장됩니다.

 

(Windows) PyTorch 설치

 

Windows에서는 ML-Agents 설치 전에 PyTorch를 별도로 설치해야 합니다. 가상 환경을 활성화한 후, 아래 명령어를 실행하세요.

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

주의: PyTorch 사용을 위해 Microsoft Visual C++ Redistributable이 필요할 수도 있습니다. 설치 가이드를 참고하세요.

 

(macOS) GRPC 라이브러리 설치

 

macOS에서는 학습 과정에서 오류가 발생하지 않도록 GRPC 런타임 라이브러리를 추가로 설치해야 합니다.

pip3 install grpcio

 

ML-Agents 설치

 

3.1 Git 을 통한 설치

 

ML-Agents Git 로컬 설치를 이용한 ML-Agents 설치 입니다. 현재 기준 release_22 안정된 버전을 다운로드 해줍니다.

해당 git을 다운로드 하면 예제 샘플도 얻을 수 있습니다.

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

(선택) 안정된 버진이 아닌 가장 최신 버전을 받으려면 해당 명령어를 입력해 주세요.

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

Python 가상 환경을 활성화한 후, ML-Agents 패키지를 설치하세요.

cd /path/to/ml-agents
python -m pip install ./ml-agents-envs
python -m pip install ./ml-agents

이 방식은 PyPi 저장소가 아닌 클론된 ML-Agents 저장소에서 설치하는 방법입니다. 

 
 

3.2 PyPi에서 최신 버전 설치

 

ML-Agents는 PyPi에서도 설치할 수 있지만, 공식 배포가 자주 이루어지지 않습니다. 최신 버전을 설치하려면 아래 명령어를 사용하세요.

python -m pip install mlagents==1.1.0
 

최신 릴리즈 버전은 여기를 확인해 주세요 : 🔗 ML-Agents Releases

 

Releases · Unity-Technologies/ml-agents

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ...

github.com

용어

 

본격적으로 시작하기에 앞서, ML-Agents Toolkit을 이해하는 데 필요한 주요 용어들을 정리했습니다.

참고 : 🔗 ML-Agents Glossary

 

ml-agents/docs/Glossary.md at develop · Unity-Technologies/ml-agents

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ...

github.com


용어 설명
Academy 환경의 타이밍, 리셋 및 학습/추론 설정을 제어하는 싱글톤 객체.
Action (행동) 에이전트가 환경 내에서 결정을 실행하는 것.
Agent (에이전트) 환경에서 관찰을 수행하고 행동을 하는 Unity 컴포넌트. 에이전트의 행동은 Policy(정책)에 의해 결정됨.
Decision (결정) 관찰을 기반으로 정책(Policy)이 행동을 수행하도록 내리는 명령.
Editor (에디터) Unity 에디터의 모든 패널(예: 계층 창, 씬 창, 인스펙터 창 등)을 포함한 환경.
Environment (환경) 에이전트를 포함하는 Unity 씬.
Experience (경험) 하나의 에이전트가 한 단계(Step)에서 얻은 [관찰, 행동, 보상] 튜플 데이터.
External Coordinator (외부 코디네이터) 외부 프로세스(예: Python API)와의 통신을 담당하는 ML-Agents 클래스.
FixedUpdate Unity의 물리 연산이 수행될 때마다 호출되는 메서드. ML-Agents 로직은 여기에서 실행해야 함.
Frame (프레임) 화면에 메인 카메라가 렌더링되는 단위. Unity의 Update 호출과 연결됨.
Observation (관찰) 특정 에이전트가 환경 상태를 부분적으로 인식하는 정보(예: 벡터, 시각 데이터).
Policy (정책) 관찰을 기반으로 결정을 생성하는 의사결정 메커니즘(일반적으로 신경망 모델).
Reward (보상) 에이전트의 행동이 현재 상태에서 얼마나 바람직한지를 나타내는 신호.
State (상태) 특정 시점에서 환경(모든 에이전트를 포함)의 근본적인 속성.
Step (단계) 에이전트의 결정 사이에서 발생하는 엔진의 원자적 변화.
Trainer (트레이너) 특정 에이전트 그룹을 학습시키는 Python 클래스.
Update Unity에서 프레임이 렌더링될 때마다 호출되는 함수. ML-Agents 로직을 배치하면 안 됨.

배경

 

머신 러닝은 데이터에서 패턴을 학습하여 의사 결정을 돕는 기술입니다. 크게 비지도 학습, 지도 학습, 강화 학습의 세 가지 방식으로 나뉘며, 각 방식은 다른 유형의 데이터를 활용합니다. ML-Agents Toolkit은 주로 강화 학습을 활용해 AI 에이전트를 훈련하며, 게임 및 시뮬레이션 환경에서 효과적으로 적용됩니다. 아래에서는 각 방식에 대한 개념과 예시를 소개합니다.

 

참고 : 🔗 Background: Machine Learning

 

Machine Learning - Unity ML-Agents Toolkit

Background: Machine Learning Given that a number of users of the ML-Agents Toolkit might not have a formal machine learning background, this page provides an overview to facilitate the understanding of the ML-Agents Toolkit. However, we will not attempt to

unity-technologies.github.io

 

머신 러닝의 주요 클래스

  • 비지도 학습 : 데이터에서 패턴을 찾고 그룹화(클러스터링)하는 기법
    예: 플레이어의 게임 참여도를 기반으로 두 그룹으로 분류
  • 지도 학습 : 데이터(속성-레이블 쌍)를 기반으로 특정 패턴을 학습하여 예측하는 기법
    예: 플레이어의 과거 데이터를 바탕으로 게임 이탈 가능성을 예측
  • 강화 학습 : 보상 신호를 기반으로 최적의 행동 정책을 학습하는 기법
    예: 소방 로봇이 화재 진압을 최적화하는 방법을 학습

강화 학습과 ML-Agents

 

이번 문서에서는 강화 학습에 대해 깊이 파고들 것입니다. 강화 학습은 AI 에이전트가 환경과 상호작용하며 보상을 최적화하는 방식으로 학습하는 기법입니다. Unity의 ML-Agents Toolkit은 이 기법을 게임과 시뮬레이션 환경에서 효과적으로 적용할 수 있도록 도와줍니다.

강화 학습의 핵심 개념은 관찰, 행동, 보상의 세 가지로 요약될 수 있습니다:

  • 관찰: 에이전트가 환경에서 감지할 수 있는 정보
  • 행동: 에이전트가 취할 수 있는 조치
  • 보상: 목표 달성을 위한 피드백

 

강화 학습을 통해 에이전트는 환경에 적응하며 점차 최적의 행동을 선택하게 되고, 이 과정은 매우 반복적이며 시행착오를 포함합니다. ML-Agents Toolkit을 사용하면, Unity 환경에서 다양한 시나리오를 시뮬레이션하여 에이전트가 점차 개선된 성과를 낼 수 있도록 훈련할 수 있습니다.

실행

 

이번에는 Unity에서 간단한 샘플 예제를 사용하여 ML-Agents를 실행해 보겠습니다.

1. ML-Agents 샘플 다운로드

먼저, ML-Agents 공식 샘플을 다운로드합니다.

2. 3DBall 씬 실행

다운로드한 프로젝트에서 3DBall 씬을 열어줍니다.

3. Anaconda를 통해 ML-Agents 실행

가상 환경 활성화

 

이전에 만든 가상 환경을 활성화합니다.

conda activate mlagents

 

ML-Agents 실행

 

이제 아래 명령어를 입력한 후, Unity에서 씬을 실행하면 학습이 시작됩니다.

mlagents-learn --run-id=Test3DBall

4. 학습 설정 파일 (yaml)

  • 실행하면 ML-Agents는 학습을 위한 yaml 설정 파일을 로드합니다.
    별도의 설정 파일을 지정하지 않으면, 기본(default) yaml 파일이 사용됩니다.

추가 설명: yaml 설정 파일에 대한 상세한 내용은 별도 페이지에서 정리할 예정입니다.
현재는 아래 공식 문서를 참고하세요.
추가 정리 페이지 : [유니티(Unity)] (ML Agent) Training Configuration File
🔗 Training Configuration File

 

[유니티(Unity)] (ML Agent) Training Configuration File

개요이번 페이지에서는 강화 학습에 필요한 Training Configuration 파일에 대해 정리하겠습니다.참고 : Training Configuration File Training Configuration File - Unity ML-Agents ToolkitTraining Configuration File Table of Conten

junbastick.tistory.com

 

ml-agents/docs/Training-Configuration-File.md at develop · Unity-Technologies/ml-agents

The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ...

github.com

5. 훈련 과정 및 결과 확인

  • 씬 내 오브젝트가 움직이며 훈련이 진행됩니다.

  • 훈련 진행 상태는 터미널에서 실시간으로 확인할 수 있습니다.

  • 훈련이 끝나면 현재 실행 경로 (results/ 폴더) 에 학습된 모델 파일이 생성됩니다.

6. 학습 통계 확인

  • TensorBoard를 통해 학습 결과를 통계로 확인할 수 있습니다. 훈련이 진행된 후, 다음 명령어를 입력하여 결과를 시각적으로 확인할 수 있는 사이트로 들어갈 수 있습니다.
tensorboard --logdir results --port 6006

  • 명령어를 실행하면, TensorBoard 대시보드가 제공하는 다양한 통계 데이터를 시각화된 형태로 확인할 수 있습니다. 이를 통해 학습 진행 상태와 성과 변화를 분석할 수 있습니다.
추가 설명: TensorBoard 사용법에 대한 상세한 내용은 별도 페이지에서 정리할 예정입니다. 현재는 아래 공식 문서를 참고하세요.
🔗 Using TensorBoard
 

Using TensorBoard to Observe Training - Unity ML-Agents Toolkit

Using TensorBoard to Observe Training The ML-Agents Toolkit saves statistics during learning session that you can view with a TensorFlow utility named, TensorBoard. The mlagents-learn command saves training statistics to a folder named results, organized b

unity-technologies.github.io

코드

학습을 위한 코드와 컴포넌트는 이번 페이지에서 다루지 않으며, 별도의 예제 페이지에서 상세히 설명할 예정입니다. 학습 환경과 에이전트 설계에 대한 참고 사항은 아래 링크를 통해 확인하실 수 있습니다.
🔗 Learning Environment Design & Agents

 

Agents - Unity ML-Agents Toolkit

Agents Table of Contents: An agent is an entity that can observe its environment, decide on the best course of action using those observations, and execute those actions within its environment. Agents can be created in Unity by extending the Agent class. T

unity-technologies.github.io

예제

이번 페이지에서는 예제를 통한 학습을 다룰 예정입니다. 구체적인 예제 코드를 통해 ML-Agents를 사용한 학습 과정을 실제로 경험할 수 있도록 구성할 예정이니, 예제 학습 페이지를 완성할 때마다 밑에 추가 하겠습니다.

추가로, 학습 환경에 대한 다양한 예제를 참고하려면 아래 링크에서 확인하실 수 있습니다.
🔗 Learning Environment Examples

 

Example Learning Environments - Unity ML-Agents Toolkit

Example Learning Environments The Unity ML-Agents Toolkit includes an expanding set of example environments that highlight the various features of the toolkit. These environments can also serve as templates for new environments or as ways to test new ML al

unity-technologies.github.io

 

 

[유니티(Unity)] (ML Agent) 예제 벌새

준비해당 예제는 아래 링크에 있는 Hummingbirds 프로젝트를 따라가며, 최신 ML-Agents 버전에 맞게 프로젝트를 수정하고 중요한 포인트를 학습하는 방식으로 진행하겠습니다.ML-Agents : Hummingbirds ML-Age

junbastick.tistory.com

 

728x90