반응형
이 시리즈를 여기까지 따라오셨다면, 이제 RLlib을 활용해 강화학습 알고리즘을 손쉽게 실행하고, 다양한 파라미터를 Config로 설정하며, 로그 관리, 체크포인트, 분산 학습, 사용자 정의 환경 연동, 콜백 등 광범위한 기능을 다룰 수 있는 역량을 갖추게 되었을 것입니다.지금까지 다룬 주요 내용들을 간략히 정리하고, 실제 프로젝트에서 RLlib을 적용할 때 고려해야 할 포인트를 짚어보며 마무리하겠습니다.지금까지의 내용 정리RLlib 기본 구조 및 Config 활용 (1~2편):Trainer, Policy, Worker 개념 이해Config 객체로 환경, 알고리즘, 프레임워크(Torch/TF), 롤아웃 및 학습 파라미터 설정결과적으로 코드 변경 없이도 다양한 실험 세팅 가능이산 행동 알고리즘 (DQN 변..
지난 글에서 우리는 LU 분해를 통해 역행렬, 선형 방정식 풀이를 구현하며 선형대수의 기반 기능을 갖추었습니다. 이제 한 단계 더 나아가 QR 분해(Orthogonal Decomposition), SVD(특이값 분해, Singular Value Decomposition), 고유값/고유벡터(Eigenvalue/Eigenvector) 문제 해결 등의 고급 연산에 도전하겠습니다.이러한 연산은 머신러닝(주성분 분석, 차원 축소), 신호처리(잡음 제거, 이미지 압축), 물리/공학 시뮬레이션(시스템 동작 분석) 등 매우 광범위한 영역에서 핵심 도구로 사용됩니다. 이번 글에서는 기초 구현과 개념 위주로 접근하며, 최적화와 수치안정성을 최대한 고려하려고 합니다.목표 연산 정리QR 분해(QR Decomposition):..
이전 글에서는 벡터와 행렬의 기본 구조 및 연산(스칼라 곱, 벡터 덧셈, 행렬-벡터 곱, 행렬-행렬 곱)을 구현하며 러스트 기반 수학/과학 계산 라이브러리의 토대를 마련했습니다. 이번 글에서는 고급 선형대수 연산으로 한 걸음 더 나아가 LU 분해, 역행렬(Inverse), 그리고 선형 방정식 시스템(Ax = b) 해결 등을 구현해보겠습니다.이러한 연산은 머신러닝, 최적화, 시뮬레이션, 통계 분석 등 다양한 분야에서 핵심적인 역할을 하며, BLAS/LAPACK 같은 고성능 라이브러리가 제공하는 기능을 러스트에서 직접 구현하고 최적화하는 과정은 러스트 기반 수학 라이브러리를 한 단계 성장시킵니다.목표 연산 정리LU 분해(LU Decomposition): 정방 행렬 A를 하삼각 행렬 L과 상삼각 행렬 U로 분..
이전까지는 주로 Gym에 내장된 표준 환경(CartPole, MountainCar, Atari 등)을 활용했습니다. 그러나 실제 문제 해결 과정에서는 고유한 시뮬레이터나 데이터 소스에서 얻은 관측을 RL 환경으로 구성하고, 에이전트가 특정 형식의 행동을 내도록 설계해야 할 수 있습니다. 또한 RL 실험 중간에 특정 이벤트에 반응하거나, 관측값을 가공하는 등의 커스터마이징이 필요할 수도 있습니다.이번 글에서는 다음 내용을 다룹니다.사용자 정의 Gym 환경을 RLlib에 등록하고 적용하기Observation/Action Wrapper를 통한 관측, 행동 전처리콜백(Callbacks)을 활용한 로그 확장, 성능 조건부 로직 삽입사용자 정의 환경 연동RLlib은 기본적으로 Gym 인터페이스에 맞는 환경이면 어떤..
이번 시리즈에서는 러스트(Rust)를 활용해 수학 및 과학 계산 라이브러리를 만드는 과정을 단계별로 살펴보겠습니다. 데이터 사이언스, 시뮬레이션, 머신러닝 등 다양한 분야에서 필수적인 벡터 연산, 행렬 연산, 선형대수, 확률/통계 연산, 고성능 FFT(Fast Fourier Transform)까지 확장 가능한 라이브러리를 직접 구현해볼 예정입니다.이 시리즈는 다음과 같은 특징을 갖습니다.안전한 메모리 관리: 러스트의 소유권과 빌림 규칙을 통해 메모리 안전성을 확보하면서 수학 연산을 처리합니다.고성능 지향: 과학 계산에서 성능은 중요합니다. SIMD 활용, 메모리 레이아웃 최적화, 멀티스레딩 등을 통해 C++ BLAS/LAPACK 수준의 성능에 도전합니다.추상화와 제네릭 활용: 러스트의 제네릭과 트레이트를..
대규모 강화학습 실험에서는 단일 프로세스나 단일 머신에서 모든 환경과 데이터를 처리하기 어렵습니다. RLlib은 Ray의 강력한 분산 및 멀티프로세싱 기능을 바탕으로, 쉽게 Worker를 늘리고 클러스터로 확장하여 더 많은 데이터를 병렬로 수집하고 처리할 수 있습니다.이번 글에서는 다음 내용을 다룹니다.멀티프로세싱 지원: num_rollout_workers와 num_envs_per_worker 설정으로 병렬 환경 처리클러스터 모드: Ray 클러스터 구성으로 다중 노드 환경에서 RLlib 실행GPU/CPU 리소스 할당: .resources()를 통해 GPU 사용, 다중 GPU 설정대규모 실험 파이프라인: 대량의 환경, 알고리즘 조합 테스트를 위한 전략멀티프로세싱: Worker 수와 Env per Worke..
강화학습 실험은 수십, 수백 회의 iteration을 거치며 성능이 개선되는 과정을 지켜보는 일이 많습니다. 이 때 중간 결과를 기록하고, 성능 지표를 시각화하며, 특정 시점의 모델 상태를 체크포인트로 저장하는 과정은 필수적입니다. RLlib은 기본적으로 이러한 기능들을 지원하고 있어, 별도 구현 없이도 손쉽게 실험 관리가 가능합니다.이번 글에서는 다음 내용을 다룹니다.RLlib의 기본 로그 디렉토리 구조TensorBoard를 통한 학습 곡선 시각화체크포인트(Checkpoint) 저장 및 복원(Restore) 방법trainer.get_policy()나 trainer.workers.foreach_policy() 등으로 모델 파라미터 추출, 추가적인 분석 방법 소개로그 디렉토리와 Ray ResultsRLli..
이전 글에서는 WebAssembly(WASM)로 러스트 코드를 브라우저 환경에서 실행하는 방법을 다뤘습니다. 이제는 러스트와 C++를 연동하는 FFI(Foreign Function Interface)를 살펴보며, 기존 C++ 코드베이스에 러스트 코드를 통합하거나, 러스트 라이브러리를 C++ 애플리케이션에서 사용하는 방법을 예제로 구현해보겠습니다. 이러한 혼합 언어 접근법은 다음과 같은 상황에 유용합니다.점진적 전환: 기존 C++ 프로젝트 일부를 러스트로 작성해 메모리 안전성과 생산성 향상특정 기능 모듈화: C++로 작성된 대규모 코드베이스에서 성능 크리티컬 모듈을 러스트로 대체, 혹은 안전성을 확보라이브러리 확장: 러스트 크레이트 생태계를 활용해 C++ 프로젝트에 빠르게 기능 추가C++에서는 헤더 파일과..
이전 글들에서는 러스트를 활용해 CLI 유틸리티, 웹 서버, 데이터베이스 연동 REST API, JWT 인증 등 백엔드 개발 영역에서의 활용 예제를 다루었습니다. 이번에는 시야를 전환하여 WebAssembly(WASM)를 통해 브라우저 환경에서 러스트 코드를 실행해보며, 프런트엔드 세계와의 접점을 탐구해보겠습니다.WASM을 사용하면 C++처럼 네이티브 언어로 작성한 코드를 브라우저에서 실행할 수 있으며, 러스트는 WASM 지원을 공식적으로 잘 갖추고 있습니다. 이를 통해 다음과 같은 장점을 누릴 수 있습니다.성능 향상: CPU 집약적인 연산을 자바스크립트 대신 러스트 WASM 모듈로 처리 가능안전성 보장: 러스트 언어 특성에 기반한 메모리 안전성, 에러 처리 장점을 웹 환경에도 적용C++ 대비 단순성: ..
지금까지는 DQN 계열(가치기반) 알고리즘에 집중했지만, 강화학습에는 정책기반 접근도 중요한 축을 차지합니다. 정책기반 알고리즘은 상태→행동 확률분포를 직접 파라미터화하는 방식으로, 연속형 행동공간이나 고차원 문제에서 장점을 발휘하고, DQN 대비 다른 하이퍼파라미터 특징을 갖습니다.RLlib은 대표적인 정책기반 알고리즘인 A2C(Advantage Actor-Critic)와 PPO(Proximal Policy Optimization)를 기본 지원합니다. 이 글에서는 A2C, PPO를 다양한 환경에서 간단히 실행해보고, Config를 통해 파라미터를 조정하는 방법을 살펴봅니다.A2C와 PPO 간단히 복습A2C(Advantage Actor-Critic):Actor-Critic 구조를 사용하여 상태 가치함수를..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.