반응형
강화학습 실험은 수십, 수백 회의 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++에서는 헤더 파일과..
1. Keep It Simple, Stupid (KISS)이번에 소개할 표현은 "Keep It Simple, Stupid", 줄여서 "KISS"입니다. 이 표현은 최대한 단순하고 간결하게 작업하라는 의미로, 소프트웨어 개발에서 복잡성을 줄이고 효율성을 높이는 데 중요한 원칙을 강조합니다.2. 의미"Keep It Simple, Stupid"는 "바보같이 복잡하게 만들지 말고 단순하게 하라"는 뜻입니다. 문제를 해결하거나 시스템을 설계할 때, 가능한 한 간단하고 명확한 방법을 선택하라는 철학을 담고 있습니다.예:"이 코드는 너무 복잡합니다. 더 간단하게 만들 수 있지 않을까요?"→ "This code is overly complicated. Can we keep it simple?"3. 어원이 표현은 196..
이전 글들에서는 러스트를 활용해 CLI 유틸리티, 웹 서버, 데이터베이스 연동 REST API, JWT 인증 등 백엔드 개발 영역에서의 활용 예제를 다루었습니다. 이번에는 시야를 전환하여 WebAssembly(WASM)를 통해 브라우저 환경에서 러스트 코드를 실행해보며, 프런트엔드 세계와의 접점을 탐구해보겠습니다.WASM을 사용하면 C++처럼 네이티브 언어로 작성한 코드를 브라우저에서 실행할 수 있으며, 러스트는 WASM 지원을 공식적으로 잘 갖추고 있습니다. 이를 통해 다음과 같은 장점을 누릴 수 있습니다.성능 향상: CPU 집약적인 연산을 자바스크립트 대신 러스트 WASM 모듈로 처리 가능안전성 보장: 러스트 언어 특성에 기반한 메모리 안전성, 에러 처리 장점을 웹 환경에도 적용C++ 대비 단순성: ..
1. Hit the Nail on the Head이번에 소개할 표현은 "Hit the Nail on the Head"입니다. 이 표현은 문제의 핵심을 정확히 지적하거나, 완벽하게 맞는 해결책을 제시하다는 의미로, 소프트웨어 개발에서 정확한 분석이나 적절한 해결책을 설명할 때 자주 사용됩니다.2. 의미"Hit the Nail on the Head"는 "못의 머리를 정확히 치다"라는 뜻으로, 문제나 상황의 본질을 정확히 짚어내거나 적합한 조치를 취했음을 비유적으로 나타냅니다.예:"당신이 말한 해결책은 문제의 핵심을 정확히 짚었어요."→ "Your suggestion really hit the nail on the head."3. 어원이 표현은 목공 작업에서 비롯되었습니다. 못을 박을 때 머리를 정확히 쳐야 ..
지금까지는 DQN 계열(가치기반) 알고리즘에 집중했지만, 강화학습에는 정책기반 접근도 중요한 축을 차지합니다. 정책기반 알고리즘은 상태→행동 확률분포를 직접 파라미터화하는 방식으로, 연속형 행동공간이나 고차원 문제에서 장점을 발휘하고, DQN 대비 다른 하이퍼파라미터 특징을 갖습니다.RLlib은 대표적인 정책기반 알고리즘인 A2C(Advantage Actor-Critic)와 PPO(Proximal Policy Optimization)를 기본 지원합니다. 이 글에서는 A2C, PPO를 다양한 환경에서 간단히 실행해보고, Config를 통해 파라미터를 조정하는 방법을 살펴봅니다.A2C와 PPO 간단히 복습A2C(Advantage Actor-Critic):Actor-Critic 구조를 사용하여 상태 가치함수를..
1. Clown Town이번에 소개할 표현은 "Clown Town"입니다. 이 표현은 혼란스럽거나 비효율적인 상황을 의미하며, 소프트웨어 개발에서 혼란스러운 프로젝트 관리, 팀워크 문제, 또는 불안정한 시스템 상태를 설명할 때 자주 사용됩니다.2. 의미"Clown Town"**은 "서커스 같은 엉망진창인 상태", 즉, "혼란스럽고 우스꽝스러운 상황"을 나타냅니다. 이 표현은 보통 유머러스하면서도 약간의 비판적인 뉘앙스를 포함합니다.예:"회의가 제대로 진행되지 않고 모두 다른 이야기를 하고 있었습니다."→ "That meeting was a total clown town."3. 어원이 표현은 서커스에서 광대(clown)가 등장하는 혼란스럽고 어수선한 분위기에서 유래되었습니다. 비유적으로는 조직적이지 않고,..
1. Cross That Bridge When You Come to It이번에 소개할 표현은 "Cross That Bridge When You Come to It"입니다. 이 표현은 미리 걱정하지 말고, 문제가 실제로 닥쳤을 때 해결하자는 의미로, 소프트웨어 개발에서 예측하지 못한 문제나 걱정을 지나치게 미리 논의하지 말자는 태도를 나타낼 때 자주 사용됩니다.2. 의미"Cross That Bridge When You Come to It"는 "그 다리를 건널 때 생각하자"라는 뜻으로, 현재 당장 필요하지 않은 문제에 대해 미리 걱정하거나 에너지를 소모하지 말자는 메시지를 담고 있습니다.예:"우리는 이 문제에 대해 나중에 생각해도 됩니다. 지금은 다른 것에 집중합시다."→ "We’ll cross that b..
앞선 글에서 RLlib을 이용하면 Config 기반으로 알고리즘과 파라미터를 손쉽게 변경할 수 있음을 확인했습니다. 이번 글에서는 이산적 행동 공간 환경(Discrete Action Space)에서 DQN과 그 변형(Double DQN, Dueling DQN, Prioritized Replay 등)을 RLlib으로 실행하는 방법을 자세히 살펴보고, 다양한 환경(예: CartPole, Atari)을 적용하는 예제를 소개하겠습니다.이산 행동 알고리즘과 RLlibDQN은 이산적 행동 공간을 전제로 개발된 알고리즘으로, RLlib에서 DQNTrainer를 통해 바로 사용할 수 있습니다. 지난 글에서 DQN에 Double/Dueling 옵션을 추가하는 방법을 봤는데, 여기서는 좀 더 다양한 설정(우선순위 리플레이..
이전 글에서는 데이터베이스를 연동한 간단한 To-Do 리스트 REST API를 구현하며, 러스트 생태계를 활용한 웹 개발의 기초를 다졌습니다. 이번 글에서는 인증(Authorization)과 토큰 기반 인증(JWT)을 적용해, 좀 더 실전적이고 안전한 REST API를 만들어봅니다. 이를 통해 사용자가 로그인하고, 발급받은 토큰(JWT)을 사용해 권한이 필요한 API에 접근하는 패턴을 익힐 수 있습니다.이번 프로젝트의 주요 목표는 다음과 같습니다.JWT 발급 및 검증: 사용자가 로그인 시도 시 JWT를 발급하고, 이후 요청 시 해당 토큰을 헤더에 담아 접근 권한을 확인하는 패턴 구현비밀번호 해싱(BCrypt) 및 보안 처리: 사용자 정보(아이디, 비밀번호) 관리 시 평문 비밀번호 대신 해싱 처리Actix..