<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://parameterfreak.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://parameterfreak.com/" rel="alternate" type="text/html" /><updated>2026-05-17T02:20:34+00:00</updated><id>https://parameterfreak.com/feed.xml</id><title type="html">parameterfreak</title><subtitle>Obsessively exploring AI, one parameter at a time</subtitle><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><entry><title type="html">H-MAS release notes (2026-05-10~05-16)</title><link href="https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes-0510-0516" rel="alternate" type="text/html" title="H-MAS release notes (2026-05-10~05-16)" /><published>2026-05-17T00:00:00+00:00</published><updated>2026-05-17T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes-0510-0516"><![CDATA[<h1 id="h-mas-주간-작업-노트">H-MAS 주간 작업 노트</h1>
<h2 id="2026년-5월-10일---5월-16일-iteration-22">2026년 5월 10일 - 5월 16일 (Iteration 22)</h2>

<h3 id="주요-개발-내용-요약">주요 개발 내용 요약</h3>

<p>이번 주는 <strong>추론 API Key 인증 시스템 구현(#254)</strong>, <strong>추론 API Rate Limiting 구현(#255)</strong>, <strong>이미지 워머 OOM 버그 수정(#260, #262)</strong>에 중점을 둔 기간이었습니다. 총 <strong>10개의 커밋</strong>, <strong>5개의 PR 머지</strong>, <strong>12개의 이슈 생성</strong>이 완료되었으며, 추론 프록시의 인증/인가 및 사용량 제한 체계를 완성하여 상위 이슈 #194(추론 API 키 인증 및 Rate Limiting)를 종료하고, 인증/인가 고도화를 위한 후속 이슈 로드맵(사용자 관리, RBAC, Redis 전환 등)을 수립한 주간이었습니다.</p>

<style>
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    margin-bottom: 1em;
  }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="video-container">
  
  <iframe src="https://www.youtube.com/embed/HI6WF86uMHY?autoplay=1&amp;mute=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">
  </iframe>
  
</div>

<hr />

<h2 id="새로운-기능-new-features">새로운 기능 (New Features)</h2>

<h3 id="1-추론-api-key-인증-시스템-254--pr-256">1. 추론 API Key 인증 시스템 (#254 → PR #256)</h3>

<p><strong>구현 완료</strong>: JWT 외에 프로그래매틱 접근(curl, OpenAI SDK 등)을 위한 API Key 인증 시스템 추가 — <code class="language-plaintext highlighter-rouge">sk-hmas-</code> 접두사 기반 키 발급, 통합 인증 미들웨어(JWT + API Key), 배포 범위 제한, 만료 관리</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">api_keys</code> 테이블 + 마이그레이션(000025, 000026) — SHA-256 해싱, 소유자/만료/스코프/활성 상태 관리</li>
      <li>통합 인증 미들웨어 리팩터링 — <code class="language-plaintext highlighter-rouge">Authorization: Bearer sk-hmas-xxx</code>(API Key) / <code class="language-plaintext highlighter-rouge">Bearer eyJ...</code>(JWT) 자동 분기</li>
      <li>API Key CRUD 엔드포인트(<code class="language-plaintext highlighter-rouge">POST/GET/DELETE /api/api-keys</code>)</li>
      <li>추론 프록시에 배포 범위 제한(<code class="language-plaintext highlighter-rouge">allowed_deployments</code>) 적용</li>
      <li>추론 로그에 인증 방식(<code class="language-plaintext highlighter-rouge">auth_method: api_key/jwt</code>)과 키 ID 기록, <code class="language-plaintext highlighter-rouge">lastUsedAt</code> 자동 갱신</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">/api-keys</code> 페이지: 키 목록(이름, 생성일, 만료, 마지막 사용일), 생성 다이얼로그(만료일/스코프 설정), 키 원문 1회 복사 UI, 폐기 확인</li>
      <li>사이드바에 “API 키” 메뉴 추가</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>키 접두사</td>
      <td><code class="language-plaintext highlighter-rouge">sk-hmas-</code> — OpenAI 호환 형식, 사용자가 인지하기 쉬운 네이밍</td>
    </tr>
    <tr>
      <td>인증 분기</td>
      <td>Bearer 토큰 패턴 자동 감지 — 기존 JWT 클라이언트 무영향</td>
    </tr>
    <tr>
      <td>키 저장</td>
      <td>SHA-256 해싱 — 원문은 생성 시 1회만 반환, DB 유출 시에도 키 복원 불가</td>
    </tr>
  </tbody>
</table>

<p><strong>검증 완료</strong>: API Key 인증으로 추론 프록시 비스트리밍/SSE 스트리밍 요청, OpenAI SDK 호환성, 만료/폐기 키 거부, 추론 로그 기록 확인</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">c6b9f96</code> (PR #256, Closes #254)</p>

<hr />

<h3 id="2-추론-api-rate-limiting-255--pr-265">2. 추론 API Rate Limiting (#255 → PR #265)</h3>

<p><strong>구현 완료</strong>: 추론 프록시에 사용자/API 키별 RPM(분당 요청 수)/TPM(분당 토큰 수) 제한 적용 — 429 응답 + 표준 헤더, 환경변수 글로벌 기본값 + API 키별 커스텀 한도 오버라이드</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li>RPM: Token Bucket 알고리즘 기반 실시간 요청 제한</li>
      <li>TPM: Sliding Window 기반 사후 토큰 사용량 추적</li>
      <li>429 Too Many Requests 응답 + 표준 헤더(<code class="language-plaintext highlighter-rouge">X-RateLimit-Limit</code>, <code class="language-plaintext highlighter-rouge">X-RateLimit-Remaining</code>, <code class="language-plaintext highlighter-rouge">X-RateLimit-Reset</code>, <code class="language-plaintext highlighter-rouge">Retry-After</code>)</li>
      <li>환경변수 글로벌 기본값(<code class="language-plaintext highlighter-rouge">HMAS_RATE_LIMIT_RPM=60</code>, <code class="language-plaintext highlighter-rouge">TPM=0</code>) + API 키별 커스텀 오버라이드</li>
      <li><code class="language-plaintext highlighter-rouge">GET /api/rate-limits</code> — 현재 사용량/한도/글로벌 기본값 조회 API</li>
      <li><code class="language-plaintext highlighter-rouge">hmas_inference_rate_limited_total</code> Prometheus 메트릭</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>API 키 생성 다이얼로그에 RPM/TPM 입력 필드 + 기본값 placeholder</li>
      <li>API 키 목록에 Rate Limit 컬럼 — 기본값 수치 + “(기본)” 표시</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>RPM 알고리즘</td>
      <td>Token Bucket — 버스트 허용 + 평균 속도 제한, API 게이트웨이 업계 표준</td>
    </tr>
    <tr>
      <td>TPM 방식</td>
      <td>사후 추적(Sliding Window) — 프록시 레이턴시 무영향, 프롬프트 토큰 사전 추정은 #270으로 분리</td>
    </tr>
    <tr>
      <td>저장소</td>
      <td>In-Memory — v0.9 단일 인스턴스 환경에 적합, Redis 전환은 #264로 분리</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">10f03b9</code> (PR #265, Closes #255)</p>

<hr />

<h2 id="버그-수정-bug-fixes">버그 수정 (Bug Fixes)</h2>

<h3 id="1-이미지-워머-oom-해결-260--pr-261">1. 이미지 워머 OOM 해결 (#260 → PR #261)</h3>

<p><strong>수정 완료</strong>: 이미지 워머 DaemonSet Pod이 CrashLoopBackOff(OOM-killed)에 빠지는 문제 해결 — 메모리 limit <code class="language-plaintext highlighter-rouge">4Mi</code> → <code class="language-plaintext highlighter-rouge">32Mi</code>, CPU limit <code class="language-plaintext highlighter-rouge">1m</code> → <code class="language-plaintext highlighter-rouge">10m</code> 상향</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li>서빙 런타임 이미지(vLLM 등)의 base layer(Ubuntu 24.04)가 init 시 4Mi 이상 메모리를 요구하여 OOM 발생</li>
  <li><code class="language-plaintext highlighter-rouge">sleep infinity</code> 실행 상태에서 실사용량은 1~2Mi이므로 노드 리소스 부담 없음</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">870ce1b</code> (PR #261, Closes #260)</p>

<hr />

<h3 id="2-이미지-워머-메모리-requestlimit-분리-262--pr-263">2. 이미지 워머 메모리 request/limit 분리 (#262 → PR #263)</h3>

<p><strong>수정 완료</strong>: #260 수정 시 request도 <code class="language-plaintext highlighter-rouge">32Mi</code>로 설정되어 발생한 불필요한 노드 메모리 예약 문제 해결 — request <code class="language-plaintext highlighter-rouge">32Mi</code> → <code class="language-plaintext highlighter-rouge">4Mi</code>로 분리</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li>Kubernetes 스케줄러가 request 기준(32Mi)으로 노드 리소스를 예약하여 실사용량 대비 16~32배 과다 예약 발생</li>
  <li>request <code class="language-plaintext highlighter-rouge">4Mi</code>(실사용 + 여유) / limit <code class="language-plaintext highlighter-rouge">32Mi</code>(init OOM 방지)로 분리</li>
  <li>Reconciler 60초 주기 갱신으로 기존 DaemonSet에 자동 반영</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">56580b5</code> (PR #263, Closes #262)</p>

<hr />

<h2 id="문서화-documentation">문서화 (Documentation)</h2>

<h3 id="기술-문서-업데이트-7건">기술 문서 업데이트 (7건)</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Control Plane 재설치 후 멤버 클러스터 정리 가이드</td>
      <td>고아 리소스 진단 → 정리 → 재등록 절차 문서화</td>
      <td><code class="language-plaintext highlighter-rouge">ac02bdd</code> (PR #259, Closes #258)</td>
    </tr>
    <tr>
      <td>Rate Limiting 가이드</td>
      <td>설정, 동작 방식, 응답 헤더, 클라이언트 대응, 운영 체크리스트</td>
      <td><code class="language-plaintext highlighter-rouge">10f03b9</code> (PR #265)</td>
    </tr>
    <tr>
      <td>추론 프록시 설계 문서</td>
      <td>Phase 3-1(API Key), 3-2(Rate Limiting) 완료 반영, 아키텍처 다이어그램 추가</td>
      <td><code class="language-plaintext highlighter-rouge">c6b9f96</code>, <code class="language-plaintext highlighter-rouge">10f03b9</code></td>
    </tr>
    <tr>
      <td>전체 문서 최신화</td>
      <td>v0.4 이후 변경사항 반영 및 미구현 기능 명시</td>
      <td><code class="language-plaintext highlighter-rouge">e7aa617</code></td>
    </tr>
    <tr>
      <td>V04_AUTH_DESIGN</td>
      <td>제외 항목에 후속 이슈(#268, #269) 링크 추가</td>
      <td><code class="language-plaintext highlighter-rouge">21996b6</code></td>
    </tr>
    <tr>
      <td>추론 테스트 UI 취소 반영</td>
      <td>#195 취소 상태 문서화 — Open WebUI 등 외부 서비스 대체 방향</td>
      <td><code class="language-plaintext highlighter-rouge">1cc78c8</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이전-iteration-계획-달성도">이전 Iteration 계획 달성도</h2>

<p>Iteration 21에서 계획한 4개 항목 <strong>1개 완료, 3개 미착수</strong> — 추론 API 키 인증 및 Rate Limiting(#194)을 완성하는 데 집중하고, 나머지 시간은 이미지 워머 OOM 긴급 수정 및 인증/인가 고도화 후속 이슈 로드맵 수립에 활용:</p>

<table>
  <thead>
    <tr>
      <th>계획</th>
      <th>이슈</th>
      <th>상태</th>
      <th>비고</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>추론 API 키 인증 및 Rate Limiting</td>
      <td>#194</td>
      <td><strong>완료</strong></td>
      <td>#254(API Key, PR #256) + #255(Rate Limiting, PR #265) 완료 → 상위 이슈 #194 종료</td>
    </tr>
    <tr>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅</td>
      <td>#192</td>
      <td>미착수</td>
      <td>API Key + Rate Limiting 구현에 우선순위 전환</td>
    </tr>
    <tr>
      <td>런타임 자동 튜닝 설계 상세화</td>
      <td>#114</td>
      <td>미착수</td>
      <td>동일 사유</td>
    </tr>
    <tr>
      <td>hmas-agent 핵심 컴포넌트 구현 착수</td>
      <td>#190</td>
      <td>미착수</td>
      <td>동일 사유</td>
    </tr>
  </tbody>
</table>

<p><strong>추가 달성</strong>: 계획에 없던 이미지 워머 OOM 긴급 수정(#260, #262), Control Plane 정리 가이드(#258), 전체 문서 최신화, 인증/인가 후속 이슈 7건 생성(#264, #266~#270).</p>

<hr />

<h2 id="미해결-이슈-open-issues">미해결 이슈 (Open Issues)</h2>

<h3 id="신규-이슈-7개-이번-iteration-생성">신규 이슈 (7개, 이번 Iteration 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>라벨</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#270</td>
      <td>리서치: TPM Rate Limiting 프롬프트 토큰 사전 추정 방안 조사</td>
      <td>research, backend</td>
    </tr>
    <tr>
      <td>#269</td>
      <td>RBAC 인가 미들웨어 구현 (역할별 권한 분기)</td>
      <td>backend, frontend</td>
    </tr>
    <tr>
      <td>#268</td>
      <td>사용자 관리 시스템 구현 (CRUD API + UI + 프로필 + 비밀번호 변경)</td>
      <td>backend, frontend</td>
    </tr>
    <tr>
      <td>#267</td>
      <td>JWT 사용자별 커스텀 Rate Limit 지원</td>
      <td>backend</td>
    </tr>
    <tr>
      <td>#266</td>
      <td>API Key 동적 수정 API (PATCH /api/api-keys/:id)</td>
      <td>backend, frontend</td>
    </tr>
    <tr>
      <td>#264</td>
      <td>Rate Limit 상태 저장소 Redis 전환</td>
      <td>backend</td>
    </tr>
    <tr>
      <td>#257</td>
      <td>이미지 사전 캐싱 자동화: 클러스터 등록 시 기본 활성화 + 설정 UI 개선</td>
      <td>enhancement, backend, frontend</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#268 → #269 → #267 순으로 의존: 사용자 관리(멀티 사용자) → RBAC(역할별 권한) → 사용자별 Rate Limit
#264(Redis 전환)는 수평 확장 시점에 착수, 현재 단일 인스턴스 환경에서는 In-Memory로 충분
#270(TPM 토큰 사전 추정)은 동시 요청 패턴 분석 후 구현 여부 판단</p>
</blockquote>

<h3 id="추론-프록시-이슈-체인">추론 프록시 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#191</td>
      <td>추론 프록시 Phase 1: 기본 프록시 구현 (Push 모드)</td>
      <td>Iteration 20 완료</td>
    </tr>
    <tr>
      <td>#193</td>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인</td>
      <td>Iteration 21 완료</td>
    </tr>
    <tr>
      <td>#227</td>
      <td>추론 요청 로그 조회 UI</td>
      <td>Iteration 21 완료</td>
    </tr>
    <tr>
      <td>#254</td>
      <td>추론 API Key 인증 시스템</td>
      <td><strong>Iteration 22 완료</strong></td>
    </tr>
    <tr>
      <td>#255</td>
      <td>추론 API Rate Limiting</td>
      <td><strong>Iteration 22 완료</strong></td>
    </tr>
    <tr>
      <td>#194</td>
      <td>추론 API 키 인증 및 Rate Limiting (상위)</td>
      <td><strong>Iteration 22 완료</strong></td>
    </tr>
    <tr>
      <td>#192</td>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합)</td>
      <td>미착수</td>
    </tr>
  </tbody>
</table>

<h3 id="인증인가-고도화-이슈-체인-신규">인증/인가 고도화 이슈 체인 (신규)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#254</td>
      <td>API Key 인증 시스템</td>
      <td><strong>Iteration 22 완료</strong></td>
    </tr>
    <tr>
      <td>#255</td>
      <td>Rate Limiting</td>
      <td><strong>Iteration 22 완료</strong></td>
    </tr>
    <tr>
      <td>#266</td>
      <td>API Key 동적 수정 API (PATCH)</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#268</td>
      <td>사용자 관리 시스템 (CRUD + 프로필)</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#269</td>
      <td>RBAC 인가 미들웨어 (역할별 권한 분기)</td>
      <td>미착수 — #268 선행</td>
    </tr>
    <tr>
      <td>#267</td>
      <td>JWT 사용자별 커스텀 Rate Limit</td>
      <td>미착수 — #268 선행</td>
    </tr>
    <tr>
      <td>#264</td>
      <td>Rate Limit Redis 전환 (수평 확장 대비)</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#270</td>
      <td>TPM 토큰 사전 추정 리서치</td>
      <td>미착수</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이번-주-통계">이번 주 통계</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>수치</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>총 커밋 수</td>
      <td>10개 (squash merge 5건 + docs 5건)</td>
    </tr>
    <tr>
      <td>머지된 PR</td>
      <td>5개 (#256, #259, #261, #263, #265)</td>
    </tr>
    <tr>
      <td>생성된 이슈</td>
      <td>12개 (#254, #255, #257, #258, #260, #262, #264, #266, #267, #268, #269, #270)</td>
    </tr>
    <tr>
      <td>해결된 이슈</td>
      <td>6개 (#194, #254, #255, #258, #260, #262)</td>
    </tr>
    <tr>
      <td>미해결 이슈</td>
      <td>34개</td>
    </tr>
    <tr>
      <td>신규 기술 문서</td>
      <td>7건 (Rate Limiting 가이드, CP 정리 가이드, 프록시 설계 현행화, 전체 문서 최신화, AUTH 문서, 추론 테스트 UI 취소 반영, 지원서 업데이트)</td>
    </tr>
    <tr>
      <td>코드 변경량</td>
      <td>+4,527줄 / -194줄</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="결론">결론</h2>

<p>이번 주는 <strong>추론 프록시 인증/인가 및 사용량 제한 체계를 완성한 기간</strong>이었습니다. API Key 인증 시스템(#254)으로 외부 시스템(OpenAI SDK, curl 등)의 프로그래매틱 접근이 가능해졌고, Rate Limiting(#255)으로 사용자/키별 RPM·TPM 제한을 적용하여 남용 방지 및 공정한 자원 분배 기반을 마련했습니다. 이로써 v0.4부터 이어진 추론 프록시 Phase 3(#194)를 종료하고, 인증/인가 고도화 후속 로드맵(사용자 관리, RBAC, Redis 전환, API Key PATCH, TPM 토큰 추정)을 수립하여 v0.9 이후 방향성을 구체화했습니다.</p>

<p><strong>핵심 성과</strong>:</p>
<ol>
  <li><strong>추론 API Key 인증 완성</strong>: <code class="language-plaintext highlighter-rouge">sk-hmas-</code> 접두사 키 발급, SHA-256 해싱, JWT/API Key 통합 인증 미들웨어, 배포 범위 제한, OpenAI SDK 호환</li>
  <li><strong>추론 API Rate Limiting 완성</strong>: Token Bucket(RPM) + Sliding Window(TPM), 429 응답 + 표준 헤더, 글로벌 기본값 + 키별 커스텀 오버라이드</li>
  <li><strong>상위 이슈 #194 종료</strong>: 추론 프록시 Phase 3(API Key + Rate Limiting) 전체 완료</li>
  <li><strong>인증/인가 후속 로드맵 수립</strong>: 사용자 관리(#268) → RBAC(#269) → 사용자별 Rate Limit(#267) 의존 체인 및 Redis 전환(#264) 계획 구체화</li>
</ol>

<p><strong>다음 주 계획</strong>:</p>
<ul>
  <li>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합) (#192)</li>
  <li>hmas-agent 핵심 컴포넌트 구현 착수 (#190)</li>
  <li>런타임 자동 튜닝 설계 상세화 (#114)</li>
  <li>API Key 동적 수정 API (#266)</li>
</ul>

<hr />

<p><strong>문서 작성일</strong>: 2026년 5월 17일</p>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="H-MAS" /><category term="MLOps" /><category term="GPU" /><category term="Scheduling" /><category term="K8s" /><category term="Inference" /><summary type="html"><![CDATA[H-MAS 주간 작업 노트 2026년 5월 10일 - 5월 16일 (Iteration 22)]]></summary></entry><entry><title type="html">AI Weekly Picks(20주차)</title><link href="https://parameterfreak.com/posts/2026/05/ai-weekly-picks-202620/" rel="alternate" type="text/html" title="AI Weekly Picks(20주차)" /><published>2026-05-13T00:00:00+00:00</published><updated>2026-05-13T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/05/ai-weekly-picks</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/05/ai-weekly-picks-202620/"><![CDATA[<h1 id="ai-daily-picks20260515">AI Daily Picks(20260515)</h1>

<ul>
  <li><a href="https://kyunghyuncho.me/teaching-fundamentals-of-machine-learning/">Teaching ‘Fundamentals of Machine Learning’ - Kyunghyun Cho</a>
    <ul>
      <li>코딩 어시스턴트(AI 툴)를 적극 활용하여 ‘Fundamentals of Machine Learning’ 수업 방식을 전면 개편한 교수의 경험담.</li>
      <li>기존의 빈칸 채우기 식 실습에서 벗어나, 매주 배운 ML 개념을 바탕으로 밑바닥부터 완전한 웹 앱을 ‘바이브 코딩(vibe-coding)’하는 방식으로 수업을 진행함.</li>
      <li>학생들에게 자유도를 주고 스스로 AI 도구를 활용해 프로젝트를 완성하게 함으로써, 학생들의 창의성과 문제 해결 능력이 크게 향상됨을 관찰함.</li>
    </ul>
  </li>
  <li><a href="https://unsloth.ai/blog/nvidia-collab">How to Make LLM Training Faster with Unsloth and NVIDIA</a>
    <ul>
      <li>NVIDIA와의 협업을 통해 Unsloth의 LLM 파인튜닝 속도를 정확도 손실 없이 기존 대비 약 25% 추가 향상시킴.</li>
      <li>반복되는 Packed Sequence 메타데이터를 매 레이어마다 재생성하지 않고 캐싱하여 재사용함으로써 14.3%의 속도 향상을 얻음.</li>
      <li>그래픽 메모리와 시스템 메모리 간의 Activation 복사와 역전파 연산을 중첩(Double Buffered Async Gradient Checkpointing)시켜 8%의 속도 향상을 달성함.</li>
      <li>MoE 라우팅 시 동적 쿼리(<code class="language-plaintext highlighter-rouge">torch.where</code>) 대신 <code class="language-plaintext highlighter-rouge">argsort</code>와 <code class="language-plaintext highlighter-rouge">bincount</code>를 활용해 연산을 한 번에 묶어서 처리함으로써 GPT-OSS 학습 속도를 15% 단축함.</li>
    </ul>
  </li>
  <li><a href="https://lightseek.org/blog/lightseek-tokenspeed.html">TokenSpeed: A Speed-of-Light LLM Inference Engine for Agentic Workloads</a>
    <ul>
      <li>에이전틱(Agentic) 워크로드에 최적화된 새로운 초고속 LLM 추론 엔진인 TokenSpeed 발표 (LightSeek Foundation, NVIDIA, AMD 등 공동 개발).</li>
      <li>Control Plane(상태 머신, 자원 관리)과 Execution Plane을 분리한 고성능 스케줄러 및 자동화된 모델링 병렬화 메커니즘을 도입함.</li>
      <li>Tensor Core 활용도를 극대화한 자체 최적화 커널(TokenSpeed MLA 등)을 적용해, 에이전트 환경에서 TensorRT-LLM 대비 더 높은 처리량(TPM)과 더 낮은 지연 시간(TPS)을 달성함.</li>
    </ul>
  </li>
  <li><a href="https://netflixtechblog.com/state-of-routing-in-model-serving-16e22fe18741">State of Routing in Model Serving - Netflix TechBlog</a>
    <ul>
      <li>Netflix에서 초당 100만 건 이상의 요청을 처리하기 위해 구축한 중앙 집중식 ML 모델 서빙 플랫폼의 아키텍처 진화 과정 소개.</li>
      <li>초기에는 ‘Switchboard’라는 중앙 프록시를 통해 컨텍스트 기반 라우팅과 A/B 테스트를 처리했으나, 단일 장애점(SPOF) 문제와 네트워크 지연이 발생함.</li>
      <li>이를 해결하기 위해 라우팅 정보 리졸브(Lightbulb)와 실제 트래픽 라우팅(Envoy proxy) 계층을 분리하는 구조로 개편하여, 안정성과 성능을 개선함.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260513">AI Daily Picks(20260513)</h1>

<ul>
  <li><a href="https://modal.com/blog/truly-serverless-gpus">How to achieve truly serverless GPUs</a>
    <ul>
      <li>GPU 인퍼런스 환경의 콜드 스타트를 수십 분에서 수십 초 단위로 단축하여 낭비 없는(Serverless) 리소스 할당을 달성한 엔지니어링 4단계 핵심 요소를 설명함.</li>
      <li><strong>클라우드 버퍼 (Cloud buffers):</strong> 건강한 유휴 GPU 버퍼를 미리 유지하여 새로운 인스턴스 할당과 헬스 체크에 소요되는 수십 분의 지연 시간을 제거함.</li>
      <li><strong>커스텀 파일 시스템 (ImageFS):</strong> libfuse를 기반으로 티어 구조의 캐시를 구현하여 전체 이미지 로드 없이 컨테이너 실행에 필요한 파일만 지연 로딩(Lazy Loading)함으로써 컨테이너 시작 시간을 단축함.</li>
      <li><strong>호스트 및 디바이스 메모리 스냅샷 (Checkpoint/Restore):</strong> gVisor(runsc)를 활용해 프로세스 메모리 상태(Host)를 복원하고, Nvidia 드라이버 기능으로 GPU 메모리(Device)까지 체크포인트 및 복원하여 런타임 초기화와 가중치 로드 시간을 획기적으로 줄임.</li>
    </ul>
  </li>
  <li><a href="https://outcomeschool.com/blog/agentic-rag">Agentic RAG</a>
    <ul>
      <li>단순 정보 검색 후 생성을 수행하는 기존 RAG의 한계를 극복하기 위해, AI Agent가 검색의 전 과정을 주도하는 Agentic RAG 개념과 워크플로우를 소개함.</li>
      <li>기존 RAG는 한 번의 검색만 수행하여 복잡한 다중 홉(multi-hop) 질문이나 모호한 쿼리 처리에 취약하지만, Agentic RAG는 Agent, 도구(Tools), 루프(Loop)를 활용해 목표 달성 시까지 검색과 평가를 반복함.</li>
      <li>대표적인 패턴으로 ReAct, Self-RAG, Corrective RAG(CRAG)가 있으며, 복잡한 쿼리와 다중 데이터 소스 환경에서 뛰어난 성능을 보이나 지연 시간과 비용 증가를 고려해야 함.</li>
    </ul>
  </li>
</ul>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="Misc" /><category term="AI" /><category term="News" /><category term="Reference" /><summary type="html"><![CDATA[AI Daily Picks(20260515)]]></summary></entry><entry><title type="html">H-MAS release notes (2026-05-03~05-09)</title><link href="https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes-0503-0509" rel="alternate" type="text/html" title="H-MAS release notes (2026-05-03~05-09)" /><published>2026-05-10T00:00:00+00:00</published><updated>2026-05-10T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/05/h-mas-weekly-release-notes-0503-0509"><![CDATA[<h1 id="h-mas-주간-작업-노트">H-MAS 주간 작업 노트</h1>
<h2 id="2026년-5월-3일---5월-9일-iteration-21">2026년 5월 3일 - 5월 9일 (Iteration 21)</h2>

<h3 id="주요-개발-내용-요약">주요 개발 내용 요약</h3>

<p>이번 주는 <strong>추론 요청 로깅 파이프라인 구현(#193)</strong>, <strong>추론 로그 뷰어 UI 및 토큰 사용량 파싱(#227)</strong>, <strong>배포 이벤트 히스토리 DB 저장 및 조회(#250)</strong>에 중점을 둔 기간이었습니다. 총 <strong>12개의 커밋</strong>, <strong>8개의 PR 머지</strong>, <strong>8개의 이슈 생성</strong>이 완료되었으며, 추론 프록시를 경유하는 모든 요청에 대해 DB 로깅·Prometheus 메트릭·토큰 사용량 추적이 가능해졌고, K8s 이벤트 TTL(~1시간) 이후에도 배포 이벤트 이력을 조회할 수 있는 운영 가시성 기반을 구축한 주간이었습니다.</p>

<style>
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    margin-bottom: 1em;
  }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="video-container">
  
  <iframe src="https://www.youtube.com/embed/mqqKaZVdrVw?autoplay=1&amp;mute=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">
  </iframe>
  
</div>

<hr />

<h2 id="새로운-기능-new-features">새로운 기능 (New Features)</h2>

<h3 id="1-추론-요청-로깅-및-메트릭-수집-파이프라인-193--pr-245">1. 추론 요청 로깅 및 메트릭 수집 파이프라인 (#193 → PR #245)</h3>

<p><strong>구현 완료</strong>: 추론 프록시를 경유하는 모든 요청에 대해 DB 로깅, Prometheus 메트릭 5종 수집, 페이지네이션/필터 지원 조회 API를 구현하여 추론 사용 현황 추적 기반 확보</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">inference_logs</code> 테이블 + 마이그레이션(000023) — request_id, username, deployment, model, cluster, TTFB/Duration, 상태 코드, 스트리밍 여부, 에러 메시지 기록. 인덱스 4개</li>
      <li>비동기 채널 기반 배치 writer (<code class="language-plaintext highlighter-rouge">InferenceLogWriter</code>) — 프록시 레이턴시 무영향 (buffer=1000, batch=100, flush=5s). Non-blocking drop + 유실 카운터 메트릭</li>
      <li>Prometheus 메트릭 5종: <code class="language-plaintext highlighter-rouge">requests_total</code>, <code class="language-plaintext highlighter-rouge">duration_seconds</code>, <code class="language-plaintext highlighter-rouge">ttfb_seconds</code>, <code class="language-plaintext highlighter-rouge">active_requests</code>, <code class="language-plaintext highlighter-rouge">log_drops_total</code></li>
      <li>로그 조회 API (<code class="language-plaintext highlighter-rouge">GET /api/inference-logs</code>) — deployment, username, status_code, 시간 범위 필터 + 페이지네이션</li>
      <li>30일 보존 정책 정리 goroutine (<code class="language-plaintext highlighter-rouge">LogCleaner</code>) — 1시간 주기, 1000건 배치 삭제</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>저장소 선택</td>
      <td>PostgreSQL (v0.9 규모에서 추가 인프라 없이 빠른 구현, v1.0에서 Loki 전환 예정)</td>
    </tr>
    <tr>
      <td>Writer 구조</td>
      <td>비동기 채널 기반 분리 — 프록시 핸들러 블로킹 방지, 향후 Loki writer로 교체 용이</td>
    </tr>
    <tr>
      <td>채널 오버플로</td>
      <td>Non-blocking drop + Prometheus Counter 추적 (프록시 안정성 최우선)</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">70a4d0f</code> (PR #245, Closes #193)</p>

<hr />

<h3 id="2-추론-요청-로그-뷰어-ui-및-토큰-사용량-파싱-227--pr-249">2. 추론 요청 로그 뷰어 UI 및 토큰 사용량 파싱 (#227 → PR #249)</h3>

<p><strong>구현 완료</strong>: 추론 로그 전용 페이지(<code class="language-plaintext highlighter-rouge">/inference-logs</code>) 신규 추가 및 비스트리밍/스트리밍 응답에서 토큰 사용량을 투명하게 추출하는 파싱 체계 구현</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Frontend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">/inference-logs</code> 경로에 독립 페이지 생성, 사이드바에 “추론 로그” 메뉴 추가</li>
      <li>테이블 UI (타임스탬프, 요청자, 배포, 모델, 상태, TTFB, 소요시간, 토큰)</li>
      <li>필터 바 (배포명, 사용자, 상태코드, 시간범위) + 상세 정보 Sheet + 페이지네이션</li>
      <li>SWR 30초 자동 갱신</li>
    </ul>
  </li>
  <li><strong>Backend</strong>:
    <ul>
      <li>비스트리밍 응답 바디에서 <code class="language-plaintext highlighter-rouge">usage</code> JSON 추출</li>
      <li>스트리밍 응답은 SSE 이벤트 스캐너(<code class="language-plaintext highlighter-rouge">SSEUsageScanner</code>)로 투명 토큰 추출</li>
      <li>opt-in 런타임 지원: vLLM, TGI, llama.cpp, Ollama에 <code class="language-plaintext highlighter-rouge">stream_options.include_usage=true</code> 자동 주입</li>
      <li><code class="language-plaintext highlighter-rouge">hmas_inference_proxy_tokens_total</code> Prometheus 카운터 (deployment × direction)</li>
    </ul>
  </li>
</ul>

<p><strong>검증 완료</strong>: vLLM/Ollama 비스트리밍·스트리밍 요청에서 토큰 정상 기록 확인, 추론 로그 페이지 필터링·상세 정보 Sheet 동작 확인</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">fad3e19</code> (PR #249, Closes #227)</p>

<hr />

<h3 id="3-배포-이벤트-히스토리-db-저장-및-조회-250--pr-251">3. 배포 이벤트 히스토리 DB 저장 및 조회 (#250 → PR #251)</h3>

<p><strong>구현 완료</strong>: K8s 이벤트 TTL(~1시간) 만료 후에도 배포 이벤트를 조회할 수 있도록 Reconciler 기반 이벤트 수집 및 DB 저장 파이프라인 구현, 모니터링 페이지에 실시간/히스토리 탭 UI 추가</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">deployment_events</code> 테이블 + 마이그레이션(000024) — fingerprint unique index 기반 중복 제거</li>
      <li>Reconciler 확장 (<code class="language-plaintext highlighter-rouge">syncDeploymentEvents()</code>) — 60초 주기, (cluster, namespace) 그룹핑으로 API 호출 최적화</li>
      <li>히스토리 조회 API (<code class="language-plaintext highlighter-rouge">GET /api/deployments/:id/events/history</code>) — 페이지네이션, 타입/시간 필터</li>
      <li><code class="language-plaintext highlighter-rouge">EventCleaner</code> goroutine — 30일 보존 정리 (1시간 주기, 배치 삭제)</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>모니터링 페이지 배포 이벤트 섹션에 실시간/히스토리 탭 전환 UI</li>
      <li>히스토리 탭: Warning/Normal 필터, 페이지네이션, 경고 카운트/타이머 표시</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>수집 위치</td>
      <td>기존 Reconciler 확장 (별도 goroutine 대비 중복 감소, 기존 클라이언트 재사용)</td>
    </tr>
    <tr>
      <td>NS 최적화</td>
      <td>배치 수집 — 동일 (cluster, namespace)의 N개 배포 → 이벤트 API 1회 호출</td>
    </tr>
    <tr>
      <td>UPSERT 방식</td>
      <td><code class="language-plaintext highlighter-rouge">clause.OnConflict</code> — 대량 이벤트 배치 처리에 적합</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">04892d7</code> (PR #251, Closes #250)</p>

<hr />

<h3 id="4-이벤트-히스토리-시간-필터-및-pagesize-조절-ui-252--pr-253">4. 이벤트 히스토리 시간 필터 및 pageSize 조절 UI (#252 → PR #253)</h3>

<p><strong>구현 완료</strong>: 배포 이벤트 히스토리 탭에 시간 범위 프리셋(1시간/24시간/7일/30일) 및 사용자 지정 시간 필터, pageSize 조절(25/50/100건) UI 추가</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li>시간 범위 프리셋 버튼 및 <code class="language-plaintext highlighter-rouge">datetime-local</code> 사용자 지정 입력</li>
  <li><code class="language-plaintext highlighter-rouge">lib/utils/time.ts</code> 유틸리티 분리 — RFC3339 변환 중앙화 (v0.9 글로벌 타임존 설정 연동 대비)</li>
  <li>pageSize 변경 시 page 1로 리셋</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">e5163e9</code> (PR #253, Closes #252)</p>

<hr />

<h3 id="5-감사-로그-api-페이지네이션-및-필터-지원-241--pr-248">5. 감사 로그 API 페이지네이션 및 필터 지원 (#241 → PR #248)</h3>

<p><strong>구현 완료</strong>: 감사 로그 API에 offset 기반 페이지네이션과 다중 필터(action, actor, from, to) 추가, 프론트엔드에 필터 UI 및 페이지 네비게이션 구현</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li><strong>Backend</strong>: <code class="language-plaintext highlighter-rouge">AuditLogFilter</code> 구조체, <code class="language-plaintext highlighter-rouge">ListByFilter()</code>/<code class="language-plaintext highlighter-rouge">CountByFilter()</code> 추가, 응답에 <code class="language-plaintext highlighter-rouge">limit</code>/<code class="language-plaintext highlighter-rouge">offset</code> 필드 추가</li>
  <li><strong>Frontend</strong>: 필터 바(액션, 실행자, 날짜) + 결과 총계 표시 + 첫/이전/다음/마지막 네비게이션</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">131f868</code> (PR #248, Closes #241)</p>

<hr />

<h3 id="6-감사-로그를-모니터링에서-설정-페이지로-이동-240--pr-242">6. 감사 로그를 모니터링에서 설정 페이지로 이동 (#240 → PR #242)</h3>

<p><strong>구현 완료</strong>: 모니터링 페이지(인스턴스 중심)에서 성격이 맞지 않는 감사 로그를 분리하여 관리 영역인 설정 페이지(<code class="language-plaintext highlighter-rouge">/settings/audit-logs</code>)로 이동, 아이콘/라벨/색상 매핑 공통 유틸 추출</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li><code class="language-plaintext highlighter-rouge">lib/utils/audit-log.ts</code> 공통 유틸 신규 생성 (대시보드 위젯과 설정 뷰어 공유)</li>
  <li>모니터링 페이지에서 감사 로그 패널 제거, 설정 페이지에 전용 뷰어 추가</li>
  <li><code class="language-plaintext highlighter-rouge">FEATURE_SPEC.md</code> 업데이트 (감사 로그 위치 변경 반영)</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">e434843</code> (PR #242, Closes #240)</p>

<hr />

<h2 id="인프라-개선-infrastructure">인프라 개선 (Infrastructure)</h2>

<h3 id="graceful-shutdown-적용-246--pr-247">Graceful Shutdown 적용 (#246 → PR #247)</h3>

<p><strong>구현 완료</strong>: <code class="language-plaintext highlighter-rouge">signal.NotifyContext</code> 기반 공유 <code class="language-plaintext highlighter-rouge">rootCtx</code>를 생성하여 모든 장기 실행 goroutine(reconciler 3개, inference log writer/cleaner)에 전달, Echo HTTP 서버 graceful shutdown 적용</p>

<p><strong>종료 흐름</strong>: SIGINT/SIGTERM → rootCtx 취소 → reconciler 자연 종료 → HTTP 서버 graceful shutdown (10초 timeout) → inference LogWriter drain → 프로세스 종료</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">eedcf17</code> (PR #247, Closes #246)</p>

<hr />

<h2 id="기타-작업-chores">기타 작업 (Chores)</h2>

<ul>
  <li>서빙 런타임 표시 순서를 프로덕션 우선순위로 재배치: <code class="language-plaintext highlighter-rouge">vLLM → TGI → TEI → llama.cpp → Ollama</code> (<code class="language-plaintext highlighter-rouge">5817d74</code>, PR #239, Closes #238)</li>
</ul>

<hr />

<h2 id="문서화-documentation">문서화 (Documentation)</h2>

<h3 id="기술-문서-업데이트-4건">기술 문서 업데이트 (4건)</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>추론 API 프록시 설계 문서</td>
      <td>Phase 1 완료 상태 반영으로 현행화</td>
      <td><code class="language-plaintext highlighter-rouge">bb312a8</code></td>
    </tr>
    <tr>
      <td>xxxxxx Agent 연동 분석</td>
      <td>hmas-agent 향후 연동 분석 추가</td>
      <td><code class="language-plaintext highlighter-rouge">19f7c7d</code></td>
    </tr>
    <tr>
      <td>외부 서비스 연동 리서치</td>
      <td>외부 서비스 연동 리서치 문서 신규</td>
      <td><code class="language-plaintext highlighter-rouge">0deb093</code></td>
    </tr>
    <tr>
      <td>추론 런타임 카테고리 UI 개선 계획</td>
      <td>런타임 카테고리 기반 UI 설계 추가</td>
      <td><code class="language-plaintext highlighter-rouge">5b9889d</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이전-iteration-계획-달성도">이전 Iteration 계획 달성도</h2>

<p>Iteration 20에서 계획한 4개 항목 <strong>2개 완료, 2개 미착수</strong> — 추론 로깅 파이프라인과 추론 테스트 UI 이슈를 종료하고, 나머지 시간은 배포 이벤트 히스토리·감사 로그 개선 등 운영 가시성 강화에 집중:</p>

<table>
  <thead>
    <tr>
      <th>계획</th>
      <th>이슈</th>
      <th>상태</th>
      <th>비고</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>추론 테스트 UI (Chat 인터페이스) 구현</td>
      <td>#195</td>
      <td>종료</td>
      <td>PR #249에서 추론 로그 뷰어 및 토큰 추적 구현으로 범위 조정, 이슈 수동 종료</td>
    </tr>
    <tr>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인 구현</td>
      <td>#193</td>
      <td>완료</td>
      <td>PR #245 — DB 로깅 + Prometheus 메트릭 5종 + 조회 API + 30일 보존</td>
    </tr>
    <tr>
      <td>런타임 자동 튜닝 설계 상세화</td>
      <td>#114</td>
      <td>미착수</td>
      <td>추론 로깅 및 운영 도구 구현에 우선순위 전환</td>
    </tr>
    <tr>
      <td>hmas-agent 설계 상세화</td>
      <td>#190</td>
      <td>미착수</td>
      <td>동일 사유</td>
    </tr>
  </tbody>
</table>

<p><strong>추가 달성</strong>: 계획에 없던 추론 로그 뷰어 UI(#227), 배포 이벤트 히스토리(#250, #252), 감사 로그 설정 페이지 이동(#240) 및 페이지네이션(#241), Graceful shutdown(#246), 런타임 표시 순서 변경(#238) 완료. 로그 통합 인프라(#243)·파티셔닝(#244) 후속 이슈 생성.</p>

<hr />

<h2 id="미해결-이슈-open-issues">미해결 이슈 (Open Issues)</h2>

<h3 id="신규-이슈-2개-이번-iteration-생성">신규 이슈 (2개, 이번 Iteration 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>라벨</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#243</td>
      <td>Loki 기반 로그 통합 인프라 구축</td>
      <td>infra</td>
    </tr>
    <tr>
      <td>#244</td>
      <td>inference_logs 테이블 파티셔닝 적용</td>
      <td>backend</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#243은 v1.0 목표로, 추론/Pod/앱 로그를 Loki로 통합하는 장기 과제
#244는 #243 Loki 전환까지 PostgreSQL 부하 완화를 위한 조건부 중간 경로 (실 운영 데이터 기반 판단)</p>
</blockquote>

<h3 id="추론-프록시-이슈-체인">추론 프록시 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#191</td>
      <td>추론 프록시 Phase 1: 기본 프록시 구현 (Push 모드)</td>
      <td>Iteration 20 완료</td>
    </tr>
    <tr>
      <td>#193</td>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인</td>
      <td><strong>Iteration 21 완료</strong></td>
    </tr>
    <tr>
      <td>#227</td>
      <td>추론 요청 로그 조회 UI</td>
      <td><strong>Iteration 21 완료</strong></td>
    </tr>
    <tr>
      <td>#192</td>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합)</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#194</td>
      <td>추론 API 키 인증 및 Rate Limiting</td>
      <td>미착수</td>
    </tr>
  </tbody>
</table>

<h3 id="추론-로그-확장-경로">추론 로그 확장 경로</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#193</td>
      <td>PostgreSQL 기반 추론 로깅 (v0.9)</td>
      <td><strong>Iteration 21 완료</strong></td>
    </tr>
    <tr>
      <td>#244</td>
      <td>inference_logs 파티셔닝 (조건부)</td>
      <td>실 운영 부하 검증 후 판단</td>
    </tr>
    <tr>
      <td>#243</td>
      <td>Loki 기반 로그 통합 (v1.0 최종 목표)</td>
      <td>미착수</td>
    </tr>
  </tbody>
</table>

<h3 id="런타임-자동-튜닝-선행-조건-이슈-체인">런타임 자동 튜닝 선행 조건 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#125</td>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH)</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#126</td>
      <td>서빙 배포 파라미터 변경 시 Rolling Restart 파이프라인</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#127</td>
      <td><del>서빙 런타임 메트릭 수집 파이프라인 구축</del></td>
      <td>Iteration 18 완료</td>
    </tr>
    <tr>
      <td>#128</td>
      <td>서빙 최적화 파라미터 변경 이력 관리 및 감사 로그</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#114</td>
      <td>런타임 자동 튜닝 (메트릭 기반 파라미터 자동 조정)</td>
      <td>선행 조건 4/4 완료 — 착수 가능</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이번-주-통계">이번 주 통계</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>수치</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>총 커밋 수</td>
      <td>12개 (squash merge 8건 + docs 4건)</td>
    </tr>
    <tr>
      <td>머지된 PR</td>
      <td>8개 (#239, #242, #245, #247, #248, #249, #251, #253)</td>
    </tr>
    <tr>
      <td>생성된 이슈</td>
      <td>8개 (#238, #240, #241, #243, #244, #246, #250, #252)</td>
    </tr>
    <tr>
      <td>해결된 이슈</td>
      <td>9개 (#193, #195, #227, #238, #240, #241, #246, #250, #252)</td>
    </tr>
    <tr>
      <td>미해결 이슈</td>
      <td>28개</td>
    </tr>
    <tr>
      <td>신규 기술 문서</td>
      <td>4건 (프록시 설계 현행화, xxxxxxx Agent 연동, 외부 서비스 연동, 런타임 카테고리 UI)</td>
    </tr>
    <tr>
      <td>코드 변경량</td>
      <td>+4,780줄 / -360줄</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="결론">결론</h2>

<p>이번 주는 <strong>추론 프록시 운영 가시성 확보와 플랫폼 운영 도구 고도화에 집중한 기간</strong>이었습니다. 추론 요청 로깅 파이프라인(#193)으로 모든 추론 요청의 사용자·배포·토큰·레이턴시를 DB에 기록하고 Prometheus 메트릭으로 노출하는 기반을 마련했으며, 추론 로그 뷰어 UI(#227)와 SSE 스트리밍 토큰 파싱을 통해 실시간 사용 현황을 추적할 수 있게 되었습니다. 배포 이벤트 히스토리(#250)로 K8s 이벤트 TTL 이후에도 장애 원인 추적이 가능해졌고, 감사 로그 설정 페이지 이동(#240) 및 페이지네이션(#241)으로 관리 기능을 체계화했습니다.</p>

<p><strong>핵심 성과</strong>:</p>
<ol>
  <li><strong>추론 로깅 파이프라인 완성</strong>: 비동기 채널 배치 writer + Prometheus 메트릭 5종 + 30일 보존 — 프록시 레이턴시 무영향 설계</li>
  <li><strong>추론 로그 뷰어 + 토큰 파싱</strong>: 비스트리밍/SSE 스트리밍 모두 투명 토큰 추출, vLLM·TGI·llama.cpp·Ollama opt-in 자동 주입</li>
  <li><strong>배포 이벤트 히스토리</strong>: Reconciler 기반 수집 + fingerprint 중복 제거 + 실시간/히스토리 탭 UI</li>
  <li><strong>운영 도구 고도화</strong>: 감사 로그 설정 이동 + 페이지네이션/필터, Graceful shutdown 전체 적용</li>
</ol>

<p><strong>다음 주 계획</strong>:</p>
<ul>
  <li>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합) (#192)</li>
  <li>런타임 자동 튜닝 설계 상세화 (#114)</li>
  <li>hmas-agent 핵심 컴포넌트 구현 착수 (#190)</li>
  <li>추론 API 키 인증 및 Rate Limiting (#194)</li>
</ul>

<hr />

<p><strong>문서 작성일</strong>: 2026년 5월 10일</p>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="H-MAS" /><category term="MLOps" /><category term="GPU" /><category term="Scheduling" /><category term="K8s" /><category term="Inference" /><summary type="html"><![CDATA[H-MAS 주간 작업 노트 2026년 5월 3일 - 5월 9일 (Iteration 21)]]></summary></entry><entry><title type="html">AI Weekly Picks(19주차)</title><link href="https://parameterfreak.com/posts/2026/05/ai-weekly-picks-202619/" rel="alternate" type="text/html" title="AI Weekly Picks(19주차)" /><published>2026-05-06T00:00:00+00:00</published><updated>2026-05-06T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/05/ai-weekly-picks</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/05/ai-weekly-picks-202619/"><![CDATA[<h1 id="ai-daily-picks20260506">AI Daily Picks(20260506)</h1>

<ul>
  <li><a href="https://www.spheron.network/blog/kv-cache-optimization-guide/">KV Cache Optimization: Serve 10x More Users on the Same GPU (2026) - Spheron Blog</a>
    <ul>
      <li>LLM 추론 시 긴 컨텍스트에서 발생하는 가장 큰 GPU 메모리 병목인 KV 캐시를 최적화하는 5가지 핵심 기법을 소개합니다.</li>
      <li>PagedAttention(가상 메모리처럼 필요시 할당), FP8/NVFP4 양자화(메모리 사용량 절감), CPU 오프로딩(트래픽 스파이크 대응), LMCache 및 프리픽스 캐싱(TTFT 단축), GQA/Flash Attention 같은 아키텍처 수준의 최적화 기법들을 다룹니다.</li>
      <li>이러한 기법들을 복합적으로 적용하여 동일한 GPU에서 수용 가능한 동시 사용자를 늘리고, 워크로드에 맞게 최적화된 GPU VRAM 예산을 산정할 수 있습니다.</li>
    </ul>
  </li>
  <li><a href="https://pr-peri.github.io/blogpost/2026/03/25/blogpost-llm-quantization-kv-cache.html">LLM Inference Optimization: Quantization, KV Cache, and Serving at Scale - Perivitta Rajendran</a>
    <ul>
      <li>프로덕션 환경에서 LLM 추론 시 발생하는 메모리 및 연산 병목을 해결하기 위한 최적화 기법들을 심도 있게 다룹니다.</li>
      <li>주요 기법으로 가중치와 KV 캐시의 메모리 사용량을 4~8배 줄이는 양자화(GPTQ, AWQ), 처리량을 10~20배 높이는 연속 배치(Continuous Batching), 지연 시간을 2~3배 단축하는 추측 해독(Speculative Decoding)을 설명합니다.</li>
      <li>이러한 최적화 기술들이 내장된 vLLM, TGI와 같은 최신 서빙 프레임워크와 Flash Attention, 텐서 병렬 처리(Tensor Parallelism)를 활용한 효율적인 대규모 인퍼런스 구축 방법을 제공합니다.</li>
    </ul>
  </li>
</ul>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="Misc" /><category term="AI" /><category term="News" /><category term="Reference" /><summary type="html"><![CDATA[AI Daily Picks(20260506)]]></summary></entry><entry><title type="html">H-MAS release notes (2026-04-26~05-02)</title><link href="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0426-0502" rel="alternate" type="text/html" title="H-MAS release notes (2026-04-26~05-02)" /><published>2026-05-03T00:00:00+00:00</published><updated>2026-05-03T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0426-0502"><![CDATA[<h1 id="h-mas-주간-작업-노트">H-MAS 주간 작업 노트</h1>
<h2 id="2026년-4월-26일---5월-2일-iteration-20">2026년 4월 26일 - 5월 2일 (Iteration 20)</h2>

<h3 id="주요-개발-내용-요약">주요 개발 내용 요약</h3>

<p>이번 주는 <strong>추론 프록시 Phase 1 구현(#191)</strong>, <strong>프론트엔드 디자인 시스템 전면 정비(#229→#230→#234→#236)</strong>, <strong>모델 등록 UX 개선(#223)</strong>에 중점을 둔 기간이었습니다. 총 <strong>21개의 커밋</strong>, <strong>7개의 PR 머지</strong>, <strong>8개의 이슈 생성</strong>이 완료되었으며, 추론 프록시로 배포된 모델에 단일 통합 엔드포인트를 통한 접근이 가능해졌고, 브랜드 컬러 도입·등록 폼 UX 일관성 확보·제품명 통일 등 프론트엔드 품질을 체계적으로 개선한 주간이었습니다.</p>

<style>
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    margin-bottom: 1em;
  }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="video-container">
  
  <iframe src="https://www.youtube.com/embed/IFl91SN1kJ0?autoplay=1&amp;mute=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">
  </iframe>
  
</div>

<hr />

<h2 id="새로운-기능-new-features">새로운 기능 (New Features)</h2>

<h3 id="1-추론-프록시-phase-1--기본-프록시-구현-push-모드-191--pr-228">1. 추론 프록시 Phase 1 — 기본 프록시 구현 (Push 모드) (#191 → PR #228)</h3>

<p><strong>구현 완료</strong>: 배포된 모델에 각 멤버 클러스터의 <code class="language-plaintext highlighter-rouge">NodeIP:NodePort</code>를 직접 알 필요 없이 H-MAS 백엔드가 중계하는 단일 통합 엔드포인트(<code class="language-plaintext highlighter-rouge">/api/inference/{name}/*</code>)를 통해 추론 요청을 보낼 수 있는 프록시 구현</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">/api/inference/:name/*</code> 프록시 핸들러 구현 — 배포명 기반 라우팅, SSE 스트리밍 지원, 구조적 로깅 (START/TTFB/DONE)</li>
      <li>JWT 인증 확장 — 기존 쿠키(<code class="language-plaintext highlighter-rouge">hmas_access</code>) 인증에 <code class="language-plaintext highlighter-rouge">Authorization: Bearer &lt;token&gt;</code> 지원 추가로 프로그래매틱 접근(curl, SDK) 지원</li>
      <li>에러 핸들링 체계화 — deployment 미존재(404), 미실행(503), 엔드포인트 미구성(502), 연결 실패(502), 타임아웃(504) 구분</li>
      <li>DB 에러 처리 개선 — <code class="language-plaintext highlighter-rouge">GetByName</code>에서 DB 장애와 NotFound 명확 분리</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>배포 상세 페이지에 프록시 엔드포인트 URL 및 curl 사용 예시 카드 추가</li>
    </ul>
  </li>
</ul>

<p><strong>검증 완료</strong>: 실제 배포 환경(research 클러스터, Qwen2.5-1.5B-Instruct/vLLM)에서 쿠키·Bearer 인증, 비스트리밍·SSE 스트리밍, 에러 케이스 등 7개 TC 통과</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">d1c98b1</code>, <code class="language-plaintext highlighter-rouge">1273e8f</code>, <code class="language-plaintext highlighter-rouge">4edf446</code>, <code class="language-plaintext highlighter-rouge">6a5fcb7</code> (PR #228, Closes #191)</p>

<hr />

<h3 id="2-모델-등록-시-huggingface-자동-채움-확대-223--pr-224">2. 모델 등록 시 HuggingFace 자동 채움 확대 (#223 → PR #224)</h3>

<p><strong>구현 완료</strong>: 모델 등록 시 “HuggingFace에서 가져오기” 기능의 자동 채움 범위를 기존 5개 필드에서 8개 필드로 확대하여, 사용자 입력 부담 감소 및 리소스 자동 추천 파이프라인 정상 작동</p>

<p><strong>주요 성과</strong>:</p>

<table>
  <thead>
    <tr>
      <th>필드</th>
      <th>Before</th>
      <th>After</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>카테고리</td>
      <td>항상 기본값 <code class="language-plaintext highlighter-rouge">llm</code></td>
      <td>HF <code class="language-plaintext highlighter-rouge">pipeline_tag</code>/<code class="language-plaintext highlighter-rouge">tags</code> 기반 자동 매핑 (LLM, Vision, Code, Embedding)</td>
    </tr>
    <tr>
      <td>파라미터 수 (<code class="language-plaintext highlighter-rouge">sizeB</code>)</td>
      <td>미설정</td>
      <td><code class="language-plaintext highlighter-rouge">safetensors.total</code> 기반 자동 설정 (fallback: 모델명 파싱)</td>
    </tr>
    <tr>
      <td>모델 크기 (<code class="language-plaintext highlighter-rouge">size</code>)</td>
      <td>미설정</td>
      <td>파라미터 수 기반 표시 문자열 (e.g., <code class="language-plaintext highlighter-rouge">70B</code>)</td>
    </tr>
    <tr>
      <td>설명</td>
      <td>HF description 비어있으면 공란</td>
      <td>메타데이터 조합 자동 합성</td>
    </tr>
    <tr>
      <td>모델 이름</td>
      <td>org prefix 포함</td>
      <td>org prefix 자동 제거</td>
    </tr>
    <tr>
      <td>리소스 추천</td>
      <td><code class="language-plaintext highlighter-rouge">sizeB=0</code>이라 미트리거</td>
      <td><code class="language-plaintext highlighter-rouge">sizeB</code> 자동 설정으로 정상 트리거</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">efd1ecd</code>, <code class="language-plaintext highlighter-rouge">81cc3ce</code>, <code class="language-plaintext highlighter-rouge">c6720cb</code>, <code class="language-plaintext highlighter-rouge">3f6b56f</code> (PR #224, Closes #223)</p>

<hr />

<h3 id="3-디자인-토큰-체계-정립--브랜드-컬러-도입-230--pr-233">3. 디자인 토큰 체계 정립 — 브랜드 컬러 도입 (#230 → PR #233)</h3>

<p><strong>구현 완료</strong>: H-MAS 고유 브랜드 컬러(쿨 슬레이트 블루) 도입 및 37개 컴포넌트의 하드코딩 컬러를 CSS 변수 기반 디자인 토큰으로 전환하여 향후 화이트라벨링/파트너 브랜딩 대비</p>

<p><strong>주요 성과</strong>:</p>

<table>
  <thead>
    <tr>
      <th>영역</th>
      <th>변경 내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">globals.css</code></td>
      <td>primary/ring/chart/sidebar 토큰을 브랜드 컬러로 설정, 다크모드 대응 토큰 정의</td>
    </tr>
    <tr>
      <td>뱃지 통일</td>
      <td>런타임·클러스터 타입·스케줄러 등 무지개색 하드코딩 → <code class="language-plaintext highlighter-rouge">zinc</code> 무채색 통일</td>
    </tr>
    <tr>
      <td>상태 컬러</td>
      <td>시맨틱 컬러(green=성공, red=에러, amber=경고) 유지, <code class="language-plaintext highlighter-rouge">deleting</code> orange→amber 통일</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">lib/colors.ts</code></td>
      <td>차트/그래프용 브랜드·상태·차트 팔레트 공유 상수 신규 생성</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">235d138</code>, <code class="language-plaintext highlighter-rouge">f6f50ee</code> (PR #233, Closes #230)</p>

<hr />

<h3 id="4-등록-폼-ux-일관성-확보--모달dialog--드로어sheet-전환">4. 등록 폼 UX 일관성 확보 — 모달(Dialog) → 드로어(Sheet) 전환</h3>

<h4 id="4-1-클러스터-등록-ui-드로어-전환-234--pr-235">4-1. 클러스터 등록 UI 드로어 전환 (#234 → PR #235)</h4>

<p><strong>구현 완료</strong>: 클러스터 등록 4단계 위자드를 중앙 모달에서 우측 슬라이드 드로어로 변경하여, 헤더(스텝 인디케이터)·푸터(네비게이션) 고정 배치 및 콘텐츠 독립 스크롤 지원</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li>네비게이션 버튼을 각 Step에서 <code class="language-plaintext highlighter-rouge">SheetFooter</code>로 통합</li>
  <li>스케줄러 선택 카드를 3열 그리드에서 세로 스택 레이아웃으로 변경</li>
  <li>연결 정보 변경 시 테스트 결과 초기화, 스케줄러 변경 시 사용자 레이블 유지 버그 수정</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">b7e6d36</code> (PR #235, Closes #234)</p>

<h4 id="4-2-모델-등록수정-ui-드로어-전환-236--pr-237">4-2. 모델 등록/수정 UI 드로어 전환 (#236 → PR #237)</h4>

<p><strong>구현 완료</strong>: 모델 등록/수정 폼을 중앙 모달에서 우측 슬라이드 드로어로 변경하여, 앱 내 모든 등록 플로우(클러스터, 배치 전략, 리소스 프로파일, 장애복구 정책, 모델)가 동일한 Sheet 패턴을 사용하도록 UX 통일</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">0e1a28c</code> (PR #237, Closes #236)</p>

<hr />

<h3 id="5-제품명-h-mas-통일-및-사이드바-정리-229--pr-232">5. 제품명 H-MAS 통일 및 사이드바 정리 (#229 → PR #232)</h3>

<p><strong>구현 완료</strong>: 기존 “Serving Platform” 혼용을 “H-MAS”로 통일하여 브랜드 일관성 확보, 사이드바 하단 유저 섹션 제거로 헤더 드롭다운과의 중복 해소</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">eee01db</code> (PR #232, Closes #229)</p>

<hr />

<h2 id="인프라-infrastructure">인프라 (Infrastructure)</h2>

<h3 id="xxxxxxxxxx-xx-코드-리뷰-설정-225--pr-226">xxxxxxxxxx xx 코드 리뷰 설정 (#225 → PR #226)</h3>

<p><strong>구현 완료</strong>: PR 코드 리뷰 품질 향상을 위한 xxxxxxxxxx xx 코드 리뷰 봇 설정 — 한국어 리뷰 출력, 경로별 리뷰 지침(Go 백엔드 에러 핸들링, Next.js 타입 안전성, Helm 보안 등) 구성</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">765759a</code> (PR #226, Closes #225)</p>

<hr />

<h2 id="문서화-documentation">문서화 (Documentation)</h2>

<h3 id="기술-문서-업데이트-5건">기술 문서 업데이트 (5건)</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>추론 프록시 테스트 가이드</td>
      <td>7개 TC 수동 테스트 절차</td>
      <td><code class="language-plaintext highlighter-rouge">a37dcf7</code> (PR #228)</td>
    </tr>
    <tr>
      <td>모델 벤치마크 기능 PRD</td>
      <td>벤치마크 기능 PRD 및 로드맵 신규</td>
      <td><code class="language-plaintext highlighter-rouge">e93d684</code></td>
    </tr>
    <tr>
      <td>시스템 요구사항</td>
      <td>요구사항 섹션 검토 및 보강</td>
      <td><code class="language-plaintext highlighter-rouge">2961edb</code></td>
    </tr>
    <tr>
      <td>HP 클러스터 GPU 목록</td>
      <td>DGX Spark 제거</td>
      <td><code class="language-plaintext highlighter-rouge">18bc616</code></td>
    </tr>
    <tr>
      <td>명칭 통일</td>
      <td>h-mas-agent → hmas-agent, 기술 문서·README 최신화</td>
      <td><code class="language-plaintext highlighter-rouge">cf19fb0</code>, <code class="language-plaintext highlighter-rouge">6159c02</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이전-iteration-계획-달성도">이전 Iteration 계획 달성도</h2>

<p>Iteration 19에서 계획한 4개 항목 <strong>1개 완료, 3개 미착수</strong> — 추론 프록시 Phase 1을 완료하고, 나머지 시간은 디자인 시스템 전면 정비 및 모델 등록 UX 개선에 집중:</p>

<table>
  <thead>
    <tr>
      <th>계획</th>
      <th>이슈</th>
      <th>상태</th>
      <th>비고</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>추론 프록시 Phase 1 구현 착수</td>
      <td>#191</td>
      <td>완료</td>
      <td>PR #228 — 프록시 핸들러 + Bearer 인증 + 엔드포인트 UI</td>
    </tr>
    <tr>
      <td>추론 테스트 UI (Chat 인터페이스) 구현</td>
      <td>#195</td>
      <td>미착수</td>
      <td>디자인 시스템 정비에 우선순위 전환</td>
    </tr>
    <tr>
      <td>런타임 자동 튜닝 설계 상세화</td>
      <td>#114</td>
      <td>미착수</td>
      <td>동일 사유</td>
    </tr>
    <tr>
      <td>h-mas-agent 설계 상세화</td>
      <td>#190</td>
      <td>미착수</td>
      <td>동일 사유</td>
    </tr>
  </tbody>
</table>

<p><strong>추가 달성</strong>: 계획에 없던 디자인 토큰 체계 정립(#230), 브랜딩 통일(#229), 등록 폼 UX 일관성 확보(#234, #236), HuggingFace 자동 채움 확대(#223), CodeRabbit 코드 리뷰 도입(#225) 완료. 모델 벤치마크 PRD 작성 및 문서 최신화.</p>

<hr />

<h2 id="미해결-이슈-open-issues">미해결 이슈 (Open Issues)</h2>

<h3 id="신규-이슈-2개-이번-iteration-생성">신규 이슈 (2개, 이번 Iteration 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>라벨</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#231</td>
      <td>다크 모드 구현 + 반응형 사이드바 (v0.9+)</td>
      <td>frontend</td>
    </tr>
    <tr>
      <td>#227</td>
      <td>추론 요청 로그 조회 UI</td>
      <td>frontend</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#231은 #230(디자인 토큰) 완료에 따른 후속 이슈로, v0.9 Technical Preview 이후 대응 예정
#227은 #193(추론 요청 로깅 파이프라인) 완료 후 착수 예정</p>
</blockquote>

<h3 id="추론-프록시-이슈-체인">추론 프록시 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#191</td>
      <td>추론 프록시 Phase 1: 기본 프록시 구현 (Push 모드)</td>
      <td><strong>Iteration 20 완료</strong></td>
    </tr>
    <tr>
      <td>#192</td>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합)</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#193</td>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인</td>
      <td>미착수</td>
    </tr>
    <tr>
      <td>#194</td>
      <td>추론 API 키 인증 및 Rate Limiting</td>
      <td>미착수</td>
    </tr>
  </tbody>
</table>

<h3 id="런타임-자동-튜닝-선행-조건-이슈-체인">런타임 자동 튜닝 선행 조건 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#125</td>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH)</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#126</td>
      <td>서빙 배포 파라미터 변경 시 Rolling Restart 파이프라인</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#127</td>
      <td><del>서빙 런타임 메트릭 수집 파이프라인 구축</del></td>
      <td>Iteration 18 완료</td>
    </tr>
    <tr>
      <td>#128</td>
      <td>서빙 최적화 파라미터 변경 이력 관리 및 감사 로그</td>
      <td>Iteration 19 완료</td>
    </tr>
    <tr>
      <td>#114</td>
      <td>런타임 자동 튜닝 (메트릭 기반 파라미터 자동 조정)</td>
      <td>선행 조건 4/4 완료 — 착수 가능</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이번-주-통계">이번 주 통계</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>수치</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>총 커밋 수</td>
      <td>21개 (+ merge 5건)</td>
    </tr>
    <tr>
      <td>머지된 PR</td>
      <td>7개 (#224, #226, #228, #232, #233, #235, #237)</td>
    </tr>
    <tr>
      <td>생성된 이슈</td>
      <td>8개 (#223, #225, #227, #229, #230, #231, #234, #236)</td>
    </tr>
    <tr>
      <td>해결된 이슈</td>
      <td>7개 (#191, #223, #225, #229, #230, #234, #236)</td>
    </tr>
    <tr>
      <td>미해결 이슈</td>
      <td>29개</td>
    </tr>
    <tr>
      <td>신규 기술 문서</td>
      <td>5건 (추론 프록시 테스트 가이드, 모델 벤치마크 PRD, 시스템 요구사항, GPU 목록, 명칭 통일)</td>
    </tr>
    <tr>
      <td>코드 변경량</td>
      <td>+3,181줄 / -1,540줄 (70개 파일)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="결론">결론</h2>

<p>이번 주는 <strong>추론 프록시 Phase 1 완성과 프론트엔드 디자인 시스템 전면 정비를 병행한 기간</strong>이었습니다. 추론 프록시(#191)로 배포된 모델에 단일 통합 엔드포인트를 통한 접근이 가능해져 외부 SDK·curl에서의 프로그래매틱 추론 호출 기반이 마련되었습니다. 동시에 브랜드 컬러 도입(#230), 제품명 통일(#229), 등록 폼 UX 통일(#234, #236) 등 프론트엔드 품질을 체계적으로 개선하여, 향후 화이트라벨링과 파트너 브랜딩에 대비한 디자인 토큰 기반 아키텍처를 구축했습니다.</p>

<p><strong>핵심 성과</strong>:</p>
<ol>
  <li><strong>추론 프록시 Phase 1 완료</strong>: 단일 엔드포인트(<code class="language-plaintext highlighter-rouge">/api/inference/{name}/*</code>) + JWT Bearer 인증 + SSE 스트리밍 — 실 환경 7개 TC 검증 완료</li>
  <li><strong>디자인 시스템 정비</strong>: 브랜드 컬러 도입 + 37개 컴포넌트 토큰화 + 등록 폼 5종 Sheet 패턴 통일</li>
  <li><strong>모델 등록 UX 개선</strong>: HuggingFace 자동 채움 확대로 리소스 자동 추천 파이프라인 정상 작동</li>
  <li><strong>개발 프로세스 개선</strong>: xxxxxxxxxx xx 코드 리뷰 도입으로 PR 리뷰 품질 향상</li>
</ol>

<p><strong>다음 주 계획</strong>:</p>
<ul>
  <li>추론 테스트 UI (Chat 인터페이스) 구현 (#195)</li>
  <li>추론 요청 로깅 및 메트릭 수집 파이프라인 구현 (#193)</li>
  <li>런타임 자동 튜닝 설계 상세화 (#114)</li>
  <li>hmas-agent 설계 상세화 (#190)</li>
</ul>

<hr />

<p><strong>문서 작성일</strong>: 2026년 5월 3일</p>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="H-MAS" /><category term="MLOps" /><category term="GPU" /><category term="Scheduling" /><category term="K8s" /><category term="Inference" /><summary type="html"><![CDATA[H-MAS 주간 작업 노트 2026년 4월 26일 - 5월 2일 (Iteration 20)]]></summary></entry><entry><title type="html">AI Weekly Picks(18주차)</title><link href="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202618/" rel="alternate" type="text/html" title="AI Weekly Picks(18주차)" /><published>2026-04-27T00:00:00+00:00</published><updated>2026-04-27T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/ai-weekly-picks</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202618/"><![CDATA[<h1 id="ai-daily-picks20260430">AI Daily Picks(20260430)</h1>

<ul>
  <li><a href="https://github.com/gauravfs-14/awesome-jepa">GitHub - gauravfs-14/awesome-jepa</a>
    <ul>
      <li>Yann LeCun과 Meta AI가 제안한 자가지도 학습(Self-supervised learning) 패러다임인 JEPA(Joint Embedding Predictive Architecture) 관련 자료를 모아둔 큐레이션 저장소입니다.</li>
      <li>픽셀이나 토큰을 재구성하지 않고 미래의 추상적 표현을 예측하여 학습하는 JEPA의 핵심 개념을 기반으로 한 도구, 라이브러리, 연구 논문, 튜토리얼 등을 종합적으로 제공합니다.</li>
      <li>비전, 언어, 의료, 물리, 시계열 등 다양한 도메인에 적용된 최신 연구와 응용 사례들을 꾸준히 업데이트하여 연구자들에게 유용한 지식 허브 역할을 합니다.</li>
    </ul>
  </li>
  <li><a href="https://pub.sakana.ai/kame/">KAME: Tandem Architecture for Enhancing Knowledge in Real-Time Speech-to-Speech Conversational AI</a>
    <ul>
      <li>실시간 Speech-to-Speech(S2S) 모델의 빠른 응답성과 백엔드 LLM의 풍부한 지식을 결합한 KAME 아키텍처를 제안했습니다.</li>
      <li>S2S 모델이 즉각적으로 응답을 시작하는 동시에 백엔드 LLM이 병렬로 실행되며 지식 신호를 비동기적으로 주입하는 “말하면서 생각하기” 패러다임을 구현했습니다.</li>
      <li>작업에 따라 백엔드 LLM(gpt-4.1, claude-opus-4-1 등)을 유연하게 교체할 수 있어, 낮은 지연 시간을 유지하면서도 전문적이고 풍부한 응답을 제공합니다.</li>
    </ul>
  </li>
  <li><a href="https://www.lmsys.org/blog/2026-04-29-p2p-update/">Updating 1T parameters in seconds - P2P weight transfer in Large Scale Distributed RL</a>
    <ul>
      <li>대규모 분산 RL(강화학습) 환경에서 SGLang을 위한 RDMA 기반의 P2P(Peer-to-Peer) 가중치 업데이트 메커니즘을 도입하여 기존 NCCL 브로드캐스트의 한계를 극복했습니다.</li>
      <li>소스 측 CPU 엔진 복제본과 Mooncake TransferEngine을 활용하여 1T 파라미터(Kimi-K2) 모델의 가중치 전송 시간을 53초에서 7.2초로 7배 단축했습니다.</li>
      <li>기존의 중앙 집중식 브로드캐스트에서 벗어나 트레이너와 추론 랭크 간의 독립적이고 병렬적인 P2P 매핑 및 Zero-Copy 전송을 구현하여 네트워크 중복을 줄이고 대역폭 활용도를 크게 높였습니다.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260428">AI Daily Picks(20260428)</h1>

<ul>
  <li><a href="https://techcommunity.microsoft.com/blog/azure-ai-foundry-blog/whats-new-in-foundry-labs---april-2026/4509714">What’s new in Foundry Labs - April 2026 - Microsoft Community Hub</a>
    <ul>
      <li><strong>MAI-Transcribe-1, Voice-1, Image-2</strong>: 마이크로소프트의 자체 개발 AI 스택으로, 높은 정확도의 음성 인식/생성 및 텍스트-이미지 생성 모델 공개.</li>
      <li><strong>Harrier-oss-v1</strong>: 94개 언어를 지원하며 지시어 기반(instruction-tuned) 맞춤 설정이 가능한 오픈소스 다국어 텍스트 임베딩 모델(270M, 0.6B, 27B).</li>
      <li><strong>Phi-4-Reasoning-Vision-15B</strong>: 15B의 컴팩트한 크기에도 차트, 수식, GUI 화면 등을 이해하고 구조화된 추론을 할 수 있는 소형 비전 추론 모델.</li>
      <li><strong>VibeVoice ASR &amp; GigaTIME</strong>: 최대 60분 오디오의 다중 화자 음성 인식과 화자 분리를 한 번에 처리하는 VibeVoice ASR, 그리고 저비용 병리 슬라이드를 고해상도 이미지로 변환해 종양 면역 미세환경 분석을 돕는 GigaTIME 모델 소개.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260427">AI Daily Picks(20260427)</h1>

<ul>
  <li><a href="https://msftnewsnow.com/microsoft-open-sources-harrier-embedding-model">Microsoft Open-Sources Harrier, A New Embedding Blockbuster Model For The Agentic Web</a>
    <ul>
      <li>마이크로소프트가 다국어 MTEB v2 벤치마크에서 최고 성능을 달성한 새로운 임베딩 모델 제품군인 Harrier-OSS-v1을 오픈소스로 공개했습니다.</li>
      <li>기존 BERT 방식이 아닌 디코더 전용 트랜스포머 아키텍처를 채택하여 최대 32,768 토큰의 긴 문맥을 청킹 없이 네이티브로 처리할 수 있습니다.</li>
      <li>27B 플래그십 모델부터 0.6B, 270M 파라미터의 경량 모델까지 제공되며, RAG 시스템 및 다국어 지원 에이전트 구축에 최적화되어 있습니다.</li>
    </ul>
  </li>
</ul>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="Misc" /><category term="AI" /><category term="News" /><category term="Reference" /><summary type="html"><![CDATA[AI Daily Picks(20260430)]]></summary></entry><entry><title type="html">H-MAS release notes (2026-04-19~04-25)</title><link href="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0419-0425/" rel="alternate" type="text/html" title="H-MAS release notes (2026-04-19~04-25)" /><published>2026-04-26T00:00:00+00:00</published><updated>2026-04-26T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0419-0425/"><![CDATA[<h1 id="h-mas-주간-작업-노트">H-MAS 주간 작업 노트</h1>
<h2 id="2026년-4월-19일---4월-25일-iteration-19">2026년 4월 19일 - 4월 25일 (Iteration 19)</h2>

<h3 id="주요-개발-내용-요약">주요 개발 내용 요약</h3>

<p>이번 주는 <strong>런타임 자동 튜닝(#114)의 선행 조건 이슈 3건 완주 (#125→#126→#128)</strong>, <strong>클러스터 장애 시 인스턴스 상태 안정성 확보</strong>, <strong>xxxxxxxxxxx 스케줄러 통합 기술 조사 완료</strong>에 중점을 둔 기간이었습니다. 총 <strong>12개의 커밋</strong>, <strong>7개의 PR 머지</strong>, <strong>12개의 이슈 생성</strong>이 완료되었으며, 인플레이스 업데이트 API(#125) → Rolling Restart 파이프라인(#126) → 변경 이력 관리(#128) 순서로 파라미터 변경 라이프사이클 전체를 1주일 만에 구축하여 #114 자동 튜닝의 기반 인프라를 마련한 주간이었습니다.</p>

<style>
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    margin-bottom: 1em;
  }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="video-container">
  
  <iframe src="https://www.youtube.com/embed/t6KCfkEupiM?autoplay=1&amp;mute=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">
  </iframe>
  
</div>

<hr />

<h2 id="새로운-기능-new-features">새로운 기능 (New Features)</h2>

<h3 id="1-서빙-배포-인플레이스-업데이트-api--patch-125--pr-208">1. 서빙 배포 인플레이스 업데이트 API — PATCH (#125 → PR #208)</h3>

<p><strong>구현 완료</strong>: 배포 삭제/재생성 없이 운영 중인 서빙 배포의 최적화 파라미터, 레플리카, 리소스 프로필을 변경할 수 있는 <code class="language-plaintext highlighter-rouge">PATCH /api/deployments/:id</code> 엔드포인트 및 프론트엔드 설정 수정 UI 구현</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">PATCH /api/deployments/:id</code> 엔드포인트 추가 (<code class="language-plaintext highlighter-rouge">replicas</code>, <code class="language-plaintext highlighter-rouge">optimization</code>, <code class="language-plaintext highlighter-rouge">resourceProfileId</code> 변경 지원)</li>
      <li><code class="language-plaintext highlighter-rouge">xxxxxxx.UpdateServingDeployment()</code> (Get-Modify-Update + 멤버 클러스터 dual-write) 구현</li>
      <li><code class="language-plaintext highlighter-rouge">UpdateServingOverridePolicy()</code> — 리소스 프로파일 OverridePolicy 생성/교체/삭제 통합</li>
      <li><code class="language-plaintext highlighter-rouge">GET /api/deployments/:id</code> 응답에 <code class="language-plaintext highlighter-rouge">optimization</code> 필드 추가 (기존 설정 표시용)</li>
      <li>Swagger 문서 재생성</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>Sheet(드로어) 기반 설정 수정 UI — 기존 <code class="language-plaintext highlighter-rouge">OptimizationCard</code> 재사용으로 프리셋/Tier 1·2/Raw Override 구조화 입력</li>
      <li>기존 설정 초기값 로드, 변경 diff 미리보기, 재시작 경고 제공</li>
      <li>인스턴스 상세 페이지에 “설정 수정” 버튼 (running/pending 상태에서 표시)</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>UI 패턴</td>
      <td>모달 대신 Sheet(드로어) 채택 — 기존 OptimizationCard 재활용으로 일관된 UX</td>
    </tr>
    <tr>
      <td>xxxxxxx 업데이트 방식</td>
      <td>Get-Modify-Update + 멤버 클러스터 dual-write — #189에서 검증된 Dual-Update 패턴 재사용</td>
    </tr>
    <tr>
      <td>Paused 배포 처리</td>
      <td>변경 불가 — 400 에러로 명확히 차단</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">059a7da</code>, <code class="language-plaintext highlighter-rouge">5d85a21</code> (PR #208, Closes #125)</p>

<hr />

<h3 id="2-서빙-배포-rolling-restart-파이프라인-126--pr-221">2. 서빙 배포 Rolling Restart 파이프라인 (#126 → PR #221)</h3>

<p><strong>구현 완료</strong>: 배포 파라미터 변경 시 안전한 롤아웃과 실패 시 자동 롤백을 수행하는 Rolling Restart 파이프라인 구현 — Dry-run 사전 분석, 롤아웃 상태 추적, CrashLoopBackOff/OOMKilled 감지 시 자동 복원</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li>Dry-run API (<code class="language-plaintext highlighter-rouge">?dryRun=true</code>): 변경 적용 전 재시작 필요 여부, 전략(RollingUpdate/Recreate), 예상 영향도 사전 분석</li>
      <li><code class="language-plaintext highlighter-rouge">deployment_rollouts</code> 테이블 (migration #21): 롤아웃 상태 추적 및 이전 설정 스냅샷 저장</li>
      <li>RolloutReconciler: 10초 간격 활성 롤아웃 모니터링, 런타임별 startup grace period 적용 (Recreate 3분 / RollingUpdate 90초)</li>
      <li>자동 롤백: CrashLoopBackOff·OOMKilled·ProgressDeadlineExceeded 감지 시 이전 설정으로 자동 복원</li>
      <li>롤아웃 상태 조회, 이력 조회, 수동 롤백 엔드포인트 추가</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>설정 수정 다이얼로그에 dry-run 분석 결과 (전략, 영향도) 표시</li>
      <li>롤아웃 상태 배너: 실시간 진행률 표시 + 수동 롤백 버튼</li>
      <li>롤아웃 이력 목록 (collapsible)</li>
    </ul>
  </li>
</ul>

<p><strong>해결된 기술 문제</strong>:</p>

<table>
  <thead>
    <tr>
      <th>문제</th>
      <th>원인</th>
      <th>해결</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ollama 최적화 변경 시 Pod 즉시 크래시</td>
      <td>런타임 환경변수 누락</td>
      <td>환경변수 생성 로직 보정</td>
    </tr>
    <tr>
      <td>롤백 스냅샷에 변경 후 값 저장</td>
      <td>스냅샷 캡처 시점 오류</td>
      <td>변경 전 값을 정확히 캡처하도록 수정</td>
    </tr>
    <tr>
      <td>Recreate 전략 시 모델 로딩 중 오탐</td>
      <td>대형 모델 초기화 시간을 실패로 오판</td>
      <td>런타임별 grace period 적용</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">8c3c584</code> (PR #221, Closes #126)</p>

<hr />

<h3 id="3-서빙-최적화-파라미터-변경-이력-관리-및-감사-로그-128--pr-222">3. 서빙 최적화 파라미터 변경 이력 관리 및 감사 로그 (#128 → PR #222)</h3>

<p><strong>구현 완료</strong>: 배포 최적화 파라미터 변경 시 변경 전/후 config, 변경 원인(manual/preset/auto_tuning/rollback), 적용 결과를 자동 기록하는 이력 관리 시스템 및 프론트엔드 통합 변경 이력 패널 구현</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">deployment_config_history</code> 테이블 신규 생성 (마이그레이션 #22), <code class="language-plaintext highlighter-rouge">rollout_id</code> FK로 롤아웃과 하이브리드 연결</li>
      <li>config-history 조회(목록/상세), 특정 시점 롤백 API 3개 엔드포인트 추가</li>
    </ul>

    <table>
      <thead>
        <tr>
          <th>엔드포인트</th>
          <th>설명</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /api/deployments/:id/config-history</code></td>
          <td>변경 이력 목록 (페이지네이션)</td>
        </tr>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /api/deployments/:id/config-history/:historyId</code></td>
          <td>변경 상세 (전/후 diff)</td>
        </tr>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">POST /api/deployments/:id/config-history/:historyId/rollback</code></td>
          <td>특정 시점으로 롤백</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>통합 변경 이력 패널: 롤아웃 상태 인라인 표시, JSON diff 뷰, 롤백 버튼</li>
      <li>기존 롤아웃 이력 섹션을 통합 패널로 흡수하여 중복 UI 제거 (활성 롤아웃 배너는 유지)</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>테이블 설계</td>
      <td>하이브리드 테이블 — 별도 <code class="language-plaintext highlighter-rouge">deployment_config_history</code> + 옵셔널 <code class="language-plaintext highlighter-rouge">rollout_id</code> FK로 롤아웃과 연결</td>
    </tr>
    <tr>
      <td>추적 범위</td>
      <td>OptimizationConfig만 — #114 자동 튜닝 범위에 맞춤 (replicas는 기존 rollouts에서 관리)</td>
    </tr>
    <tr>
      <td>롤백 구현</td>
      <td>기존 xxxxxxx 파이프라인 재사용 — <code class="language-plaintext highlighter-rouge">UpdateServingDeployment</code> 내부 호출로 일관성 유지</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">e223e85</code> (PR #222, Closes #128)</p>

<hr />

<h3 id="4-url-경로-logs--monitoring-변경-204--pr-205">4. URL 경로 /logs → /monitoring 변경 (#204 → PR #205)</h3>

<p><strong>구현 완료</strong>: 사이드바 메뉴명 “모니터링”과 URL 경로(<code class="language-plaintext highlighter-rouge">/logs</code>) 불일치를 해소하여 Next.js 라우트 디렉토리를 <code class="language-plaintext highlighter-rouge">monitoring</code>으로 이동하고, 사이드바·내부 네비게이션·인스턴스 상세 페이지·데모 시나리오의 경로 참조를 일괄 변경</p>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">e2c9963</code> (PR #205, Closes #204)</p>

<hr />

<h2 id="버그-수정-bug-fixes">버그 수정 (Bug Fixes)</h2>

<h3 id="1-클러스터-종료-시-인스턴스-상세모니터링-페이지-무한-로딩-209--pr-211">1. 클러스터 종료 시 인스턴스 상세/모니터링 페이지 무한 로딩 (#209 → PR #211)</h3>

<p><strong>수정 완료</strong>: 멤버 클러스터 종료 시 인스턴스 상세 페이지와 모니터링 페이지가 무한 로딩에 빠지는 문제를 해결하여, 클러스터 미도달 시에도 DB 기반 정보를 정상 표시하고 사용자 친화적 안내 UI 제공</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li><strong>Backend</strong>: xxxxxxx/멤버 클러스터 조회를 병렬 실행 + 개별 5초 timeout 적용, 실패 시 DB fallback 응답 반환 (<code class="language-plaintext highlighter-rouge">statusSource: "cached"</code>)</li>
  <li><strong>Frontend</strong>: <code class="language-plaintext highlighter-rouge">fetchWithAuth</code> AbortController 타임아웃 추가, <code class="language-plaintext highlighter-rouge">statusSource === "cached"</code> 시 amber 배너로 “마지막 저장된 상태” 안내, 모니터링 페이지 클러스터 연결 불가 안내 UI (내부 K8s 에러 미노출)</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">40dc15a</code> (PR #211, Closes #209)</p>

<hr />

<h3 id="2-클러스터-종료-후-인스턴스-stale-status-해결-210--pr-212">2. 클러스터 종료 후 인스턴스 stale status 해결 (#210 → PR #212)</h3>

<p><strong>수정 완료</strong>: 클러스터 종료 후에도 인스턴스가 “실행 중”으로 표시되는 stale status 문제를 다층 방어(defense-in-depth)로 해결, 목록 API 응답 시간을 <strong>10초 → 0.03초</strong>로 대폭 개선</p>

<p><strong>수정 내용</strong>:</p>
<ul>
  <li><strong>Backend — API 핸들러</strong>: 클러스터 readiness 사전 확인 → not-ready 클러스터 배포는 즉시 <code class="language-plaintext highlighter-rouge">unknown</code>/<code class="language-plaintext highlighter-rouge">cached</code> 반환, 순차 → 병렬 enrichment + 목록 전용 타임아웃(2초) 도입</li>
  <li><strong>Backend — Reconciler</strong>: 연속 3회 API 실패 시 DB <code class="language-plaintext highlighter-rouge">LastKnownStatus</code>를 <code class="language-plaintext highlighter-rouge">"unknown"</code>으로 갱신, not-ready 클러스터 인스턴스 일괄 <code class="language-plaintext highlighter-rouge">"unknown"</code> 갱신 (60초 주기)</li>
  <li><strong>Backend — Repository</strong>: <code class="language-plaintext highlighter-rouge">BulkUpdateStatusByCluster</code>, <code class="language-plaintext highlighter-rouge">ListActiveByCluster</code> 신규 메서드 추가</li>
  <li><strong>Frontend</strong>: <code class="language-plaintext highlighter-rouge">statusSource="cached"</code> 시 WifiOff 아이콘 + 툴팁, 대시보드 파이차트에 <code class="language-plaintext highlighter-rouge">"unknown"</code> 별도 카테고리(회색) 분리, unhealthy 배너에 unknown 포함</li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">8e223a7</code> (PR #212, Closes #210)</p>

<hr />

<h2 id="문서화-documentation">문서화 (Documentation)</h2>

<h3 id="1-xxxxxxxxxxx-스케줄러-통합-기술-조사-및-설계-179--pr-220">1. xxxxxxxxxxx 스케줄러 통합 기술 조사 및 설계 (#179 → PR #220)</h3>

<p><strong>작성 완료</strong>: xxxxxxxxxxx 스케줄러 도입을 위한 기초 기술 조사 및 H-MAS 통합 설계 문서 4건 작성 — 멀티클러스터 이기종 스케줄러 환경 설계, 기능 계층 분류, GPU 공유/격리 방식 비교, Compute Plane GP Profile 설계를 포괄</p>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/research/xxxxxxxxxxx/</code> (허브 + 4개 문서)</td>
      <td>xxxxxxxxxxx 기능 조사, GPU 공유 비교, H-MAS 통합 설계</td>
      <td><code class="language-plaintext highlighter-rouge">0b1c1f2</code> (PR #220)</td>
    </tr>
  </tbody>
</table>

<p><strong>조사 범위</strong>:</p>

<table>
  <thead>
    <tr>
      <th>영역</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>멀티클러스터 아키텍처</td>
      <td>이기종 스케줄러 환경(기본 K8s/xxxxxxxxxxx) 설계, 클러스터별 독립 스케줄러</td>
    </tr>
    <tr>
      <td>기능 계층</td>
      <td>L1~L4 내부 분류 + Capability 기반 사용자 노출 전략</td>
    </tr>
    <tr>
      <td>GPU 공유/격리</td>
      <td>xxx, xxxx, xxx, xxx, xxxx-xxxxxxx 5가지 비교, 방식 무관 추상화 설계</td>
    </tr>
    <tr>
      <td>멀티 GPU 추론</td>
      <td>TP/PP/EP 병렬화 전략, 모델 크기별 GPU 요구량, HP vs GP 역할 분담</td>
    </tr>
    <tr>
      <td>호환성</td>
      <td>K8s 버전 매트릭스, ARM64 이미지 지원 확인</td>
    </tr>
    <tr>
      <td>H-MAS 통합</td>
      <td>백엔드 Capability 감지, 프론트엔드 동적 UI, Compute Plane GP Profile</td>
    </tr>
  </tbody>
</table>

<p><strong>생성된 후속 이슈</strong>:</p>
<ul>
  <li>#216 — xxxxxxxxxxx 실 클러스터 설치 및 환경 검증</li>
  <li>#217 — QoS/오버커밋 동작 검증</li>
  <li>#218 — 멀티 GPU 추론 (Gang Scheduling + 토폴로지) 검증</li>
  <li>#219 — H-MAS xxxxxxxxxxx 통합 구현</li>
</ul>

<h3 id="2-기타-문서">2. 기타 문서</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">README.md</code></td>
      <td>시스템 요구사항 섹션 신설 및 README 보강</td>
      <td><code class="language-plaintext highlighter-rouge">c847274</code></td>
    </tr>
    <tr>
      <td>다수 문서</td>
      <td>#210 구현에 따른 클러스터 장애 대응 관련 문서 최신화</td>
      <td><code class="language-plaintext highlighter-rouge">6038f82</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="기타-작업-chores">기타 작업 (Chores)</h2>

<ul>
  <li>기술 스택 전체 버전 핀닝 (<code class="language-plaintext highlighter-rouge">c716bb5</code>)</li>
</ul>

<hr />

<h2 id="이전-iteration-계획-달성도">이전 Iteration 계획 달성도</h2>

<p>Iteration 18에서 계획한 4개 항목 <strong>1개 완료, 3개 미착수</strong> — 인플레이스 업데이트(#125)를 기점으로 Rolling Restart(#126)→변경 이력(#128) 선행 조건 체인 완주 및 클러스터 장애 안정성 확보에 집중:</p>

<table>
  <thead>
    <tr>
      <th>계획</th>
      <th>이슈</th>
      <th>상태</th>
      <th>비고</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH) 구현</td>
      <td>#125</td>
      <td>완료</td>
      <td>PR #208 — PATCH API + Sheet UI + xxxxxxx Dual-Update</td>
    </tr>
    <tr>
      <td>추론 프록시 Phase 1 구현 착수</td>
      <td>#191</td>
      <td>⏸ 미착수</td>
      <td>인플레이스 업데이트 → Rolling Restart → 변경 이력 체인에 우선순위 전환</td>
    </tr>
    <tr>
      <td>추론 테스트 UI (Chat 인터페이스) 구현</td>
      <td>#195</td>
      <td>⏸ 미착수</td>
      <td>동일 사유</td>
    </tr>
    <tr>
      <td>h-mas-agent 설계 상세화</td>
      <td>#190</td>
      <td>⏸ 미착수</td>
      <td>동일 사유</td>
    </tr>
  </tbody>
</table>

<p><strong>추가 달성</strong>: 계획에 없던 Rolling Restart 파이프라인(#126), 변경 이력 관리(#128) 구현으로 #114 자동 튜닝의 선행 조건 3/4 완료. 클러스터 장애 시 stale status(#210) 및 무한 로딩(#209) 버그 수정. xxxxxxxxxxx 기술 조사(#179) 완료 및 후속 검증 이슈 4건 + 리서치 이슈 3건 생성으로 v0.9 GP 클러스터 Phase 준비.</p>

<hr />

<h2 id="미해결-이슈-open-issues">미해결 이슈 (Open Issues)</h2>

<h3 id="신규-이슈-12개-이번-iteration-생성">신규 이슈 (12개, 이번 Iteration 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>라벨</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#219</td>
      <td>구현: H-MAS xxxxxxxxxxx 통합 — Capability 감지, API, 프론트엔드, Compute Plane</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#218</td>
      <td>검증: 멀티 GPU 추론 지원 — Gang Scheduling 및 GPU 토폴로지 인식 검증</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#217</td>
      <td>검증: xxxxxxxxxxx QoS 클래스 및 리소스 오버커밋 동작 검증</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#216</td>
      <td>검증: xxxxxxxxxxx 실 클러스터 설치 및 환경 호환성 검증</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#215</td>
      <td>리서치: GPU 사용량 기반 과금/미터링 시스템 설계</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#214</td>
      <td>리서치: SaaS 멀티테넌트 자원 거버넌스 설계 (ElasticQuota 계층형 쿼터)</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#213</td>
      <td>리서치: GPU 공유/격리 방식 비교 조사 (xxx, xxxx, xxx, xxx, xxxx-xxxxxxx)</td>
      <td>research</td>
    </tr>
    <tr>
      <td>#207</td>
      <td>서빙 배포 Desired State 기반 Reconciler 적용 (2-Phase 일관성 보장)</td>
      <td>backend</td>
    </tr>
    <tr>
      <td>#206</td>
      <td>서빙 배포 PVC 인플레이스 리사이즈 지원</td>
      <td>backend</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#216→#217→#218→#219는 #179(xxxxxxxxxxx 리서치)의 후속 검증/구현 이슈 체인으로, 이번 iteration에 기술 조사 문서를 기반으로 분해
#213→#214→#215는 xxxxxxxxxxx 통합 과정에서 파생된 SaaS/GP 관련 리서치 이슈</p>
</blockquote>

<h3 id="런타임-자동-튜닝-선행-조건-이슈-체인">런타임 자동 튜닝 선행 조건 이슈 체인</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>상태</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#125</td>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH)</td>
      <td><strong>Iteration 19 완료</strong></td>
    </tr>
    <tr>
      <td>#126</td>
      <td>서빙 배포 파라미터 변경 시 Rolling Restart 파이프라인</td>
      <td><strong>Iteration 19 완료</strong></td>
    </tr>
    <tr>
      <td>#127</td>
      <td><del>서빙 런타임 메트릭 수집 파이프라인 구축</del></td>
      <td>Iteration 18 완료</td>
    </tr>
    <tr>
      <td>#128</td>
      <td>서빙 최적화 파라미터 변경 이력 관리 및 감사 로그</td>
      <td><strong>Iteration 19 완료</strong></td>
    </tr>
    <tr>
      <td>#114</td>
      <td>런타임 자동 튜닝 (메트릭 기반 파라미터 자동 조정)</td>
      <td><strong>선행 조건 4/4 완료 — 착수 가능</strong></td>
    </tr>
  </tbody>
</table>

<h3 id="추론-프록시-이슈-체인-4개-미착수">추론 프록시 이슈 체인 (4개, 미착수)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#191</td>
      <td>추론 프록시 Phase 1: 기본 프록시 구현 (Push 모드)</td>
    </tr>
    <tr>
      <td>#192</td>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합)</td>
    </tr>
    <tr>
      <td>#193</td>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인</td>
    </tr>
    <tr>
      <td>#194</td>
      <td>추론 API 키 인증 및 Rate Limiting</td>
    </tr>
  </tbody>
</table>

<h3 id="기타-미해결-이슈">기타 미해결 이슈</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#195</td>
      <td>프론트엔드: 추론 테스트 UI (Chat 인터페이스)</td>
    </tr>
    <tr>
      <td>#190</td>
      <td>h-mas-agent 핵심 컴포넌트 구현</td>
    </tr>
    <tr>
      <td>#134</td>
      <td>대시보드 GPU 토폴로지 컴팩트 위젯 실데이터 연동 (h-mas-agent)</td>
    </tr>
    <tr>
      <td>#120</td>
      <td>DB 기반 최적화 프리셋 관리 (CRUD API + UI)</td>
    </tr>
    <tr>
      <td>#122</td>
      <td>사용자 정의 최적화 프리셋 CRUD (DB 기반)</td>
    </tr>
    <tr>
      <td>#123</td>
      <td>프리셋 벤치마크 인프라 및 GPU 스펙별 최적화 값 분기</td>
    </tr>
    <tr>
      <td>#96</td>
      <td>리서치: GPU 메모리 인지형 동적 모델 Bin Packing 전략</td>
    </tr>
    <tr>
      <td>#186</td>
      <td>리서치: 서버리스 서빙(Scale-to-Zero) 방식 분석</td>
    </tr>
    <tr>
      <td>#184</td>
      <td>리서치: 폐쇄망(Air-Gapped) 환경 배포 전략 수립</td>
    </tr>
    <tr>
      <td>#66</td>
      <td>스케줄러 어노테이션 변환 (xxx/xxxxxxxxxxx → xxxxxxx OverridePolicy)</td>
    </tr>
    <tr>
      <td>#62</td>
      <td>모델 프리셋 리스트 최신화</td>
    </tr>
    <tr>
      <td>#39</td>
      <td>Failover / 재배치 정책 구현 — v0.95 마일스톤</td>
    </tr>
    <tr>
      <td>#38</td>
      <td>NUMA / 토폴로지 인식 스케줄링 구현 — v0.95 마일스톤</td>
    </tr>
    <tr>
      <td>#36</td>
      <td>추론 API 프록시 구현 (통합 엔드포인트)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="이번-주-통계">이번 주 통계</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>수치</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>총 커밋 수</td>
      <td>12개 (+ merge 7건)</td>
    </tr>
    <tr>
      <td>머지된 PR</td>
      <td>7개 (#205, #208, #211, #212, #220, #221, #222)</td>
    </tr>
    <tr>
      <td>생성된 이슈</td>
      <td>12개 (#204, #206, #207, #209, #210, #213, #214, #215, #216, #217, #218, #219)</td>
    </tr>
    <tr>
      <td>해결된 이슈</td>
      <td>7개 (#125, #126, #128, #179, #204, #209, #210)</td>
    </tr>
    <tr>
      <td>미해결 이슈</td>
      <td>28개</td>
    </tr>
    <tr>
      <td>신규 기술 문서</td>
      <td>4개 (xxxxxxxxxxx 허브 + 기능 조사 + GPU 공유 비교 + H-MAS 통합 설계)</td>
    </tr>
    <tr>
      <td>코드 변경량</td>
      <td>+6,930줄 / -273줄 (62개 파일)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="결론">결론</h2>

<p>이번 주는 <strong>런타임 자동 튜닝(#114)의 선행 조건 이슈 3건(#125→#126→#128)을 순차 완주하여 파라미터 변경 라이프사이클 전체를 구축한 기간</strong>이었습니다. 인플레이스 업데이트 API(#125)로 운영 중 배포 파라미터 변경이 가능해졌고, Rolling Restart 파이프라인(#126)으로 CrashLoopBackOff/OOMKilled 감지 시 자동 롤백이 적용되며, 변경 이력 관리(#128)로 모든 설정 변경이 감사 로그로 기록됩니다. 이로써 Iteration 18에서 완료한 메트릭 수집(#127)과 합쳐 #114 자동 튜닝의 선행 조건 4/4가 모두 충족되었습니다.</p>

<p>클러스터 장애 대응에서는 stale status(#210)와 무한 로딩(#209) 문제를 다층 방어로 해결하여, 목록 API 응답 시간을 10초에서 0.03초로 개선하고 클러스터 미도달 시에도 DB 기반 정보를 안정적으로 제공하게 되었습니다.</p>

<p>xxxxxxxxxxx 스케줄러 기술 조사(#179)를 완료하고 후속 검증 이슈 4건(#216~#219)과 SaaS 관련 리서치 3건(#213~#215)을 생성하여, 6월 GP 서빙 엔진 Phase 진입을 위한 로드맵을 구체화했습니다.</p>

<p><strong>핵심 성과</strong>:</p>
<ol>
  <li><strong>파라미터 변경 라이프사이클 완주</strong>: #125(PATCH API) → #126(Rolling Restart + 자동 롤백) → #128(변경 이력 + 감사 로그) — #114 자동 튜닝 선행 조건 4/4 완료</li>
  <li><strong>클러스터 장애 안정성 확보</strong>: stale status 다층 방어 + 무한 로딩 해결 — 목록 API 10초 → 0.03초 개선</li>
  <li><strong>xxxxxxxxxxx 기술 조사 완료</strong>: 4건 리서치 문서 + 후속 검증/구현 이슈 4건 생성 — GP 클러스터 Phase 준비</li>
  <li><strong>SaaS 로드맵 구체화</strong>: GPU 공유/격리 비교(#213), 멀티테넌트 거버넌스(#214), 과금/미터링(#215) 리서치 이슈 생성</li>
</ol>

<p><strong>다음 주 계획</strong>:</p>
<ul>
  <li>추론 프록시 Phase 1 구현 착수 (#191) — Push 모드 기본 프록시</li>
  <li>추론 테스트 UI (Chat 인터페이스) 구현 (#195)</li>
  <li>런타임 자동 튜닝 설계 상세화 (#114) — 선행 조건 완료에 따른 착수</li>
  <li>h-mas-agent 설계 상세화 (#190)</li>
</ul>

<hr />

<p><strong>문서 작성일</strong>: 2026년 4월 26일</p>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="H-MAS" /><category term="MLOps" /><category term="GPU" /><category term="Scheduling" /><category term="K8s" /><category term="Inference" /><summary type="html"><![CDATA[H-MAS 주간 작업 노트 2026년 4월 19일 - 4월 25일 (Iteration 19)]]></summary></entry><entry><title type="html">AI Weekly Picks(17주차)</title><link href="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202617/" rel="alternate" type="text/html" title="AI Weekly Picks(17주차)" /><published>2026-04-21T00:00:00+00:00</published><updated>2026-04-21T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/ai-weekly-picks</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202617/"><![CDATA[<h1 id="ai-daily-picks20260423">AI Daily Picks(20260423)</h1>

<ul>
  <li><a href="https://llm-d.ai/blog/production-grade-llm-inference-at-scale-kserve-llm-d-vllm">Production-Grade LLM Inference at Scale with KServe, llm-d, and vLLM</a>
    <ul>
      <li>수백 개의 대형 언어 모델(LLM)을 스케일링하고 관리하는 과정에서 기존 vLLM의 단순 배포 방식이 가진 스토리지 지연, 인프라 종속성, 비효율적 로드 밸런싱 문제를 KServe, llm-d, vLLM 조합으로 해결한 사례를 공유합니다.</li>
      <li>KServe의 LLMInferenceService를 통해 표준 Kubernetes API 수준에서 vLLM 설정을 정밀하게 커스터마이징하여 하드웨어 특성에 맞는 유연한 배포를 가능하게 했습니다.</li>
      <li>Envoy 및 Gateway API Inference Extension을 활용한 접두어 캐시 인식 라우팅(prefix-cache aware routing)을 적용하여 GPU 효율성을 극대화했으며, 실제 Llama 3.1 70B 모델 배포에서 출력 토큰 생성 속도를 3배, 첫 토큰 응답 시간(TTFT)을 절반으로 단축하는 성과를 얻었습니다.</li>
    </ul>
  </li>
  <li><a href="https://pureai.com/articles/2026/04/09/microsoft-open-sources-embedding-models-to-improve-ai-data-retrieval.aspx">Microsoft Open-Sources Embedding Models to Improve AI Data Retrieval</a>
    <ul>
      <li>마이크로소프트가 단순한 키워드 매칭을 넘어 의미론적 연관성을 파악해 검색, 추천 및 데이터 검색 시스템의 기반을 이루는 새로운 AI 임베딩 모델 제품군(Harrier)을 오픈소스로 공개했습니다.</li>
      <li>엔터프라이즈 AI가 실험 단계에서 실제 운영 환경으로 전환됨에 따라, 생성된 결과물의 정교함보다 검증된 실제 데이터에 기반하여 환각(오류)을 줄이고 신뢰성을 높이는 검색 증강 생성(RAG) 및 에이전트 시스템의 중요성이 커지고 있습니다.</li>
      <li>100개 이상의 언어를 지원하고 다양한 환경에서 구동 가능한 이 고성능 임베딩 모델의 오픈소스화는, 개발자들이 폭넓은 애플리케이션에 이를 쉽게 통합할 수 있게 함으로써 기업의 내부 검색 도구 강화 및 AI 어시스턴트 성능 향상에 실질적으로 기여할 것으로 기대됩니다.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260422">AI Daily Picks(20260422)</h1>

<ul>
  <li><a href="https://kempnerinstitute.harvard.edu/research/deeper-learning/from-models-to-scientists-building-ai-agents-for-scientific-discovery">From Models to Scientists: Building AI Agents for Scientific Discovery - Kempner Institute</a>
    <ul>
      <li>하버드 Kempner Institute에서 개발한 <strong>ToolUniverse</strong>는 대규모 언어 모델(LLM)이 600개 이상의 과학 도구(머신러닝 모델, DB, 시뮬레이터 등)를 활용해 연구를 기획하고 수행할 수 있게 해주는 AI 과학자 에이전트 구축 프레임워크입니다.</li>
      <li>4가지 핵심 컴포넌트(Manager, Composer, Discover, Optimizer)를 제공하여, 단순한 도구 호출(MCP)을 넘어 다단계 과학적 추론과 워크플로우를 실행하고 새로운 도구를 자율적으로 생성 및 최적화할 수 있도록 지원합니다.</li>
      <li>실제 사례로 AI 에이전트가 단백질 타겟 탐색부터 화합물 식별, 구조 최적화 및 특허 검증에 이르는 약물 발견의 전 과정을 시뮬레이션하여 인간 연구자의 강력한 협력자(Co-scientist)로 활용될 수 있음을 보여주었습니다.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260421">AI Daily Picks(20260421)</h1>

<ul>
  <li><a href="https://ai-beat.github.io/news/2026/03/harrier-oss-multilingual-embeddings/">Microsoft’s Harrier Embeds 32K Tokens at Once - AI Beat</a>
    <ul>
      <li>최대 32,768 토큰(기존 대비 30~60배)의 컨텍스트 윈도우를 지원하는 디코더 전용 다국어 임베딩 모델 제품군(Harrier-OSS-v1: 270M, 0.6B, 27B)이 MIT 라이선스로 오픈소스 공개되었습니다.</li>
      <li>27B 모델은 다국어 MTEB v2 벤치마크에서 74.3점으로 최고 성능(SOTA)을 달성했으며, 문서를 청킹하지 않고 전체 논문이나 계약서를 한 번에 임베딩할 수 있어 RAG(검색 증강 생성) 시스템의 설계에 변화를 줄 수 있습니다.</li>
      <li>디코더 전용 구조(마지막 토큰 풀링 방식)를 채택하여 강력한 성능을 발휘하지만, 양방향 인코더 방식에 비해 추론 비용(Inference cost)이 증가한다는 단점이 있으며 27B 모델은 전용 GPU 인프라를 요구합니다.</li>
    </ul>
  </li>
  <li><a href="https://mitsloan.mit.edu/ideas-made-to-matter/ai-agents-tech-circularity-whats-ahead-platforms-2026">AI agents, tech circularity: What’s ahead for platforms in 2026 - MIT Sloan</a>
    <ul>
      <li>플랫폼 시장 환경은 자율적인 AI 에이전트의 등장에 대비해 에이전트 전용 인터페이스와 통제 규칙을 마련하는 방향으로 변화하고 있습니다.</li>
      <li>생성형 AI의 활발한 도입은 코딩 생산성을 높였으나 최신 시스템에서는 관리가 어려운 불완전한 코드가 축적되는 “기술 부채 폭증(turbocharged technical debt)” 리스크를 발생시키고 있습니다.</li>
      <li>AI 스택의 소수 빅테크 의존 심화 문제에 대응하기 위해 신중한 AI 툴 도입이 필요하며, 나아가 디지털 플랫폼 전략이 하드웨어 재활용 및 재판매를 통한 순환 경제(circular economy) 영역까지 확장되고 있습니다.</li>
    </ul>
  </li>
  <li><a href="https://www.kriraai.com/blog/turboquant-kv-cache-compression-changes-llm-inference">TurboQuant KV Cache Compression: What Changes for LLM Inference</a>
    <ul>
      <li>별도의 재학습 없이(training-free) LLM의 KV 캐시 메모리 사용량을 최대 6배 줄여주는 구글의 압축 기술 ‘TurboQuant’를 분석한 글로, 장문 컨텍스트 추론의 핵심 병목인 VRAM 한계를 획기적으로 극복할 수 있습니다.</li>
      <li>극심한 비대칭성 문제를 지닌 캐시 값 분포를 ‘PolarQuant’ 단계의 직교 회전(Orthogonal rotation)으로 균일화하여 양자화 효율을 극대화하며, 실제 구현 시에는 논문상의 QJL 잔차 교정 대신 보편적인 MSE 전용 양자화(MSE-only quantization)를 사용하는 것이 성능 면에서 우수한 것으로 입증되었습니다.</li>
      <li>기존 파라미터 양자화(AWQ 등)와 동시 적용이 가능한 상호보완적 기술로서, 향후 프레임워크 지원이 완료되면 다중 접속 및 장문 입력이 필요한 에이전트/RAG 기반 기업용 AI 환경의 인프라 효율성을 극대화할 것입니다.</li>
    </ul>
  </li>
  <li>
    <ul>
      <li>LLM 텍스트 생성 시 이전 토큰에 대한 중복 연산을 방지해주는 ‘KV Cache(Key-Value Cache)’ 메커니즘의 원리를 설명한 상세 가이드입니다.</li>
      <li>계산 속도를 O(1) 수준으로 높이는 대신 GPU의 VRAM 메모리 소모가 컨텍스트 길이에 비례해 선형적으로 증가하며, 결국 메모리 관리(Memory bottleneck)가 실제 운영 및 배포 단계에서 가장 중요한 과제가 됨을 강조합니다.</li>
      <li>메모리 한계 부딪힘을 극복하기 위한 대표적 최적화 기술로 PagedAttention(메모리 파편화 방지), GQA(멀티 쿼리 헤드의 KV 헤드 공유), KV Cache Quantization(데이터 정밀도 축소) 등을 소개하고 활용을 권장합니다.</li>
    </ul>
  </li>
  <li><a href="https://mlhive.com/2026/04/microsoft-harrier-open-source-embedding-models-rag">Microsoft Harrier Disrupts the AI Landscape Dethroning Proprietary Embedding Models — ML Hive</a>
    <ul>
      <li>마이크로소프트가 상용 임베딩 모델(OpenAI, Google)의 성능을 능가하는 최대 27B 파라미터 규모의 다국어 오픈소스 임베딩 모델군 ‘Harrier’를 공개하여 기업용 RAG 구조의 혁신을 주도하고 있습니다.</li>
      <li>초거대 파라미터를 기반으로 단어 구분의 혼동(Semantic crowding) 문제를 해결함으로써 컨텍스트의 미세한 차이를 예리하게 분별해내며, 번역 과정 없이도 100개 이상의 언어를 동일한 다국어 벡터 공간으로 일관성 있게 맵핑할 수 있습니다.</li>
      <li>최상위 성능의 모델을 오픈소스로 무료 공개한 것은 검색 시스템 구축 문턱을 허물고 엔터프라이즈 AI 애플리케이션의 확산시키며, 나아가 이와 맞물린 마이크로소프트 자체 클라우드(Azure) 인프라 수요를 촉진하기 위한 전략적 선택(“commoditizing your complement”)으로 평가됩니다.</li>
    </ul>
  </li>
</ul>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="Misc" /><category term="AI" /><category term="News" /><category term="Reference" /><summary type="html"><![CDATA[AI Daily Picks(20260423)]]></summary></entry><entry><title type="html">H-MAS release notes (2026-04-12~04-18)</title><link href="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0412-0418/" rel="alternate" type="text/html" title="H-MAS release notes (2026-04-12~04-18)" /><published>2026-04-19T00:00:00+00:00</published><updated>2026-04-19T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/h-mas-weekly-release-notes-0412-0418/"><![CDATA[<h1 id="h-mas-주간-작업-노트">H-MAS 주간 작업 노트</h1>
<h2 id="2026년-4월-12일---4월-18일-iteration-18">2026년 4월 12일 - 4월 18일 (Iteration 18)</h2>

<h3 id="주요-개발-내용-요약">주요 개발 내용 요약</h3>

<p>이번 주는 <strong>서빙 런타임 메트릭 수집 파이프라인 전체 구현</strong>, <strong>배포 일시정지/재시작 기능</strong>, <strong>브랜치 전략 및 릴리즈 프로세스 문서화</strong>에 중점을 둔 기간이었습니다. 총 <strong>23개의 커밋</strong>, <strong>6개의 PR 머지</strong>, <strong>9개의 이슈 생성</strong>이 완료되었으며, #127(메트릭 수집 파이프라인)의 3개 서브이슈(인프라→Backend API→Frontend)를 1주일 만에 순차 완주하여 목 데이터 기반 대시보드를 Prometheus 실데이터로 전면 전환한 주간이었습니다.</p>

<style>
  .video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 비율 */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    margin-bottom: 1em;
  }
  .video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
</style>

<div class="video-container">
  
  <iframe src="https://www.youtube.com/embed/QS24P_KsbK0?autoplay=1&amp;mute=1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">
  </iframe>
  
</div>

<hr />

<h2 id="새로운-기능-new-features">새로운 기능 (New Features)</h2>

<h3 id="1-서빙-배포-일시정지재시작-pause--resume-185--pr-189">1. 서빙 배포 일시정지/재시작 (Pause &amp; Resume) (#185 → PR #189)</h3>

<p><strong>구현 완료</strong>: 서빙 배포의 일시정지(Pause) 및 재시작(Resume) 기능을 xxxxxxx Dual-Update 패턴으로 구현하여, 멤버 클러스터 Pod를 종료/재생성하면서 xxxxxxx 전파 지연 문제를 해결</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">POST /api/deployments/:id/pause</code>, <code class="language-plaintext highlighter-rouge">POST /api/deployments/:id/resume</code> 엔드포인트 추가</li>
      <li>xxxxxxx Dual-Update: xxxxxxx API Server + 멤버 클러스터 직접 변경을 동시에 수행하여 전파 지연 문제 해결 (#100 패턴 적용)</li>
      <li><code class="language-plaintext highlighter-rouge">ScaleServingDeployment()</code>, <code class="language-plaintext highlighter-rouge">CheckMemberDeploymentRunning()</code>, <code class="language-plaintext highlighter-rouge">IsServingDeploymentPaused()</code> xxxxxxx 클라이언트 함수 추가</li>
      <li>Resume 후 xxxxxxx가 pending으로 보고할 때 멤버 클러스터를 직접 조회하여 running 상태로 보정</li>
      <li>Reconciler에 paused 상태 교차 검증 (DB ↔ K8s annotation) 및 외부 변경 감지 로직 추가</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li>인스턴스 목록 드롭다운 메뉴에 일시정지/재시작 액션 추가</li>
      <li>인스턴스 상세 페이지 일시정지/재시작 버튼</li>
      <li>대시보드 파이 차트에 paused 카운트 반영</li>
      <li><code class="language-plaintext highlighter-rouge">deployment-status.ts</code>에 paused 배지 스타일 추가</li>
    </ul>
  </li>
  <li><strong>Docs</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">xxxxxxx_STATE_MANAGEMENT.md</code>: xxxxxxx 상태 관리 패턴 아키텍처 문서 (Dual-Update, Direct Status Verification, Cross-Validation)</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>스케일 방식</td>
      <td><code class="language-plaintext highlighter-rouge">replicas: 0</code> 기반 일시정지 — Deployment/Pod을 삭제하지 않으므로 Resume 시 빠른 복구 가능</td>
    </tr>
    <tr>
      <td>xxxxxxx 상태 보정</td>
      <td>Resume 후 멤버 클러스터 직접 조회로 running 보정 — xxxxxxx 전파 지연(수 초) 동안 UI에 pending 표시 방지</td>
    </tr>
    <tr>
      <td>Reconciler 교차 검증</td>
      <td>DB <code class="language-plaintext highlighter-rouge">paused</code> 상태 ↔ K8s annotation 비교 — 외부에서 수동 스케일 변경 시 감지</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">05eaf73</code> (PR #189, Closes #185)</p>

<hr />

<h3 id="2-모니터링-인프라-구축--prometheus--dcgm-exporter-배포-196--pr-199">2. 모니터링 인프라 구축 — Prometheus + DCGM Exporter 배포 (#196 → PR #199)</h3>

<p><strong>구현 완료</strong>: Control Plane에 Prometheus Server를 Helm subchart로 배포하고, 멤버 클러스터에 Prometheus Agent/DCGM Exporter/Node Exporter를 배포하여 멀티클러스터 메트릭 수집 파이프라인의 기반 인프라를 구축</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Helm Chart</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">charts/h-mas/Chart.yaml</code>에 Prometheus subchart dependency 추가 (<code class="language-plaintext highlighter-rouge">condition: prometheus.enabled</code>)</li>
      <li><code class="language-plaintext highlighter-rouge">values.yaml</code>: 프로덕션 기본값 (retention 15d, PV 50Gi, remote-write-receiver, servicePort 9090)</li>
      <li><code class="language-plaintext highlighter-rouge">values-dev.yaml</code>: 개발환경 오버라이드 (retention 3d, PV 비활성화, NodePort 30090)</li>
    </ul>
  </li>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">PROMETHEUS_URL</code> 환경변수 주입 (Backend Deployment 템플릿)</li>
      <li><code class="language-plaintext highlighter-rouge">CreateServingDeployment()</code>에 Prometheus scrape annotation 자동 추가 (<code class="language-plaintext highlighter-rouge">prometheus.io/scrape</code>, <code class="language-plaintext highlighter-rouge">/port</code>, <code class="language-plaintext highlighter-rouge">/path</code>)</li>
    </ul>
  </li>
  <li><strong>멤버 클러스터</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">charts/prometheus-agent-values.yaml</code>: Prometheus 3.x Agent 모드 (<code class="language-plaintext highlighter-rouge">--agent</code> 플래그), Node Exporter 포함</li>
      <li>Makefile: <code class="language-plaintext highlighter-rouge">deploy-prometheus-agent</code>, <code class="language-plaintext highlighter-rouge">deploy-dcgm</code>, <code class="language-plaintext highlighter-rouge">undeploy-monitoring</code> 타겟 추가</li>
      <li><code class="language-plaintext highlighter-rouge">deploy-dcgm</code> annotation 타입 버그 수정 (<code class="language-plaintext highlighter-rouge">--set</code> → <code class="language-plaintext highlighter-rouge">--set-string</code>)</li>
    </ul>
  </li>
  <li><strong>Docs</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">MONITORING_ARCHITECTURE.md</code>, <code class="language-plaintext highlighter-rouge">MONITORING_SETUP_GUIDE.md</code> 업데이트</li>
    </ul>
  </li>
</ul>

<p><strong>검증 결과 (xxxstack + research 클러스터 — RTX 5060 Ti)</strong>:</p>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>결과</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Prometheus Server 배포 + PromQL 쿼리</td>
      <td>v</td>
    </tr>
    <tr>
      <td>Prometheus Agent → Remote Write → Central Prometheus 메트릭 도착</td>
      <td>v</td>
    </tr>
    <tr>
      <td>vLLM 런타임 메트릭 수집 (97종)</td>
      <td>v</td>
    </tr>
    <tr>
      <td>DCGM GPU 메트릭 (사용률, 온도, 전력, 메모리)</td>
      <td>v</td>
    </tr>
    <tr>
      <td>Node Exporter (메모리, 디스크)</td>
      <td>v</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">a53e1d6</code>, <code class="language-plaintext highlighter-rouge">2def76c</code>, <code class="language-plaintext highlighter-rouge">15289a1</code>, <code class="language-plaintext highlighter-rouge">6d43c59</code>, <code class="language-plaintext highlighter-rouge">4f1225f</code>, <code class="language-plaintext highlighter-rouge">b4558dc</code> (PR #199, Closes #196)</p>

<hr />

<h3 id="3-backend-메트릭-조회-api-구현--promql-연동-197--pr-200">3. Backend 메트릭 조회 API 구현 — PromQL 연동 (#197 → PR #200)</h3>

<p><strong>구현 완료</strong>: Prometheus HTTP API 클라이언트를 통한 서빙 런타임/GPU 메트릭 조회 REST API를 구현하고, 런타임별(vLLM, TGI, llama.cpp) 메트릭 이름을 통합 메트릭으로 정규화</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend (신규 파일 6개)</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">internal/metrics/client.go</code>: Prometheus HTTP API 래퍼 (InstantQuery, RangeQuery)</li>
      <li><code class="language-plaintext highlighter-rouge">internal/metrics/queries.go</code>: 런타임별 PromQL 매핑 + 통합 메트릭 정의</li>
      <li><code class="language-plaintext highlighter-rouge">internal/metrics/service.go</code>: 비즈니스 로직 (DB 조회 → PromQL 구성 → 정규화)</li>
      <li><code class="language-plaintext highlighter-rouge">internal/metrics/middleware.go</code>: Echo 미들웨어 (HTTP 메트릭 수집) + <code class="language-plaintext highlighter-rouge">/metrics</code> 핸들러</li>
      <li><code class="language-plaintext highlighter-rouge">internal/handler/metrics.go</code>: API 핸들러 + Swagger 주석</li>
      <li><code class="language-plaintext highlighter-rouge">internal/model/metrics.go</code>: API 응답 구조체</li>
    </ul>
  </li>
  <li>
    <p><strong>API 엔드포인트</strong>:</p>

    <table>
      <thead>
        <tr>
          <th>엔드포인트</th>
          <th>설명</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /api/deployments/:id/metrics</code></td>
          <td>배포별 실시간 메트릭 스냅샷</td>
        </tr>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /api/deployments/:id/metrics/history</code></td>
          <td>시계열 메트릭 이력</td>
        </tr>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /api/clusters/:name/gpu-metrics</code></td>
          <td>클러스터별 GPU 메트릭 요약</td>
        </tr>
        <tr>
          <td><code class="language-plaintext highlighter-rouge">GET /metrics</code></td>
          <td>Backend 자체 Prometheus exposition</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li><strong>Docs</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">PROMETHEUS_RECORDING_RULES_DESIGN.md</code>: v1.0 이후 메트릭 쿼리 최적화를 위한 Recording Rules 설계</li>
    </ul>
  </li>
</ul>

<p><strong>의사결정 사항</strong>:</p>

<table>
  <thead>
    <tr>
      <th>결정</th>
      <th>내용</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Prometheus 라이브러리</td>
      <td><code class="language-plaintext highlighter-rouge">prometheus/client_golang</code> 전체 — API 클라이언트 + instrumentation 동시 해결</td>
    </tr>
    <tr>
      <td>배포→메트릭 매핑</td>
      <td>DB 조회 → K8s 레이블 기반 PromQL — 추가 레이블 없이 즉시 동작</td>
    </tr>
    <tr>
      <td>캐싱</td>
      <td>없음 (v0.9 규모에서 불필요) — Recording Rules를 향후 검토 문서로 정리</td>
    </tr>
    <tr>
      <td>Prometheus 미연결 시</td>
      <td>503 + <code class="language-plaintext highlighter-rouge">PROMETHEUS_NOT_CONFIGURED</code> — 프론트엔드에서 안내 UI 분기 가능</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">a96b2f5</code>, <code class="language-plaintext highlighter-rouge">b0bc9ea</code>, <code class="language-plaintext highlighter-rouge">675e060</code> (PR #200, Closes #197)</p>

<hr />

<h3 id="4-프론트엔드-모니터링-실데이터-연동-및-대시보드-개선-198--pr-201">4. 프론트엔드 모니터링 실데이터 연동 및 대시보드 개선 (#198 → PR #201)</h3>

<p><strong>구현 완료</strong>: SWR 기반 실시간 폴링으로 배포별 13개 메트릭 지표를 게이지 및 시계열 차트로 표시하고, 대시보드에 서빙 성능 요약 카드·비정상 인스턴스 경고 배너·클러스터 GPU 상태 도트 히트맵을 추가</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Frontend (신규 파일 13개)</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">lib/api/metrics.ts</code>: 메트릭 API 클라이언트 + TypeScript 타입</li>
      <li><code class="language-plaintext highlighter-rouge">lib/hooks/use-deployment-metrics.ts</code>: 배포별 메트릭 SWR 훅</li>
      <li><code class="language-plaintext highlighter-rouge">lib/hooks/use-cluster-gpu-metrics.ts</code>: 클러스터 GPU 메트릭 SWR 훅</li>
      <li><code class="language-plaintext highlighter-rouge">lib/hooks/use-dashboard-metrics.ts</code>: 대시보드 GPU 사용률 + 클러스터별 GPU 상세 훅</li>
      <li><code class="language-plaintext highlighter-rouge">lib/hooks/use-aggregated-metrics.ts</code>: running 배포 메트릭 집계 훅</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/deployment-metrics-panel.tsx</code>: 게이지 + 시계열 차트 통합 패널</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/metric-gauge.tsx</code>: 개별 메트릭 게이지 컴포넌트</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/metrics-time-series-chart.tsx</code>: Recharts 시계열 차트</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/metrics-status-bar.tsx</code>: 인스턴스 상세용 컴팩트 메트릭 바</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/cluster-gpu-metrics-panel.tsx</code>: 클러스터 GPU 패널</li>
      <li><code class="language-plaintext highlighter-rouge">components/metrics/monitoring-not-configured.tsx</code>: Prometheus 미설정 폴백 UI</li>
      <li><code class="language-plaintext highlighter-rouge">components/dashboard/serving-performance-summary.tsx</code>: 서빙 성능 요약 카드</li>
      <li><code class="language-plaintext highlighter-rouge">components/dashboard/unhealthy-instances-banner.tsx</code>: 비정상 인스턴스 배너</li>
    </ul>
  </li>
  <li><strong>대시보드 개선</strong>:
    <ul>
      <li>StatsCards: GPU 실사용률 (Prometheus 연결 시) / GPU 할당률 (미연결 시) 자동 전환</li>
      <li>ServingPerformanceSummary: 총 RPS, 총 TPS, 평균 TTFT, 활성 요청, 최대 KV Cache, 평균 GPU 온도</li>
      <li>ClusterOverview: 클러스터별 GPU 온도 점 표시</li>
      <li>사이드바 메뉴명 “로그” → “모니터링” 변경</li>
    </ul>
  </li>
  <li><strong>모니터링 페이지</strong>:
    <ul>
      <li>풀 메트릭 패널 + Pod 로그/이벤트 사이드바 통합 레이아웃</li>
      <li>인스턴스 상세 페이지에 컴팩트 MetricsStatusBar 배치</li>
      <li>SWR polling: 스냅샷 10초, 히스토리 60초, 대시보드 GPU 30초, 집계 메트릭 15초</li>
    </ul>
  </li>
</ul>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">2589b9b</code> (PR #201, Closes #198)</p>

<hr />

<h3 id="5-latency-p95p99-분할-표시-및-ollama-런타임-미지원-안내-133--pr-202">5. Latency p95/p99 분할 표시 및 Ollama 런타임 미지원 안내 (#133 → PR #202)</h3>

<p><strong>구현 완료</strong>: TTFT, E2E Latency, ITL에 대해 p95/p99 퍼센타일 분할 표시를 추가하고, Ollama 런타임의 추론 메트릭 미지원 안내 UI를 구현하여 #133 대시보드 메트릭 이슈를 완료</p>

<p><strong>주요 성과</strong>:</p>

<ul>
  <li><strong>Backend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">queries.go</code>에 p95/p99 PromQL <code class="language-plaintext highlighter-rouge">histogram_quantile</code> 쿼리 추가 (vLLM 전체, TGI는 TTFT만)</li>
      <li><code class="language-plaintext highlighter-rouge">MetricsSnapshot</code> 모델에 6개 필드 추가 (<code class="language-plaintext highlighter-rouge">ttftP95</code>, <code class="language-plaintext highlighter-rouge">ttftP99</code>, <code class="language-plaintext highlighter-rouge">e2eLatencyP95</code>, <code class="language-plaintext highlighter-rouge">e2eLatencyP99</code>, <code class="language-plaintext highlighter-rouge">itlP95</code>, <code class="language-plaintext highlighter-rouge">itlP99</code>)</li>
      <li><code class="language-plaintext highlighter-rouge">runtimeQueries</code>에 <code class="language-plaintext highlighter-rouge">"ollama"</code> 엔트리 추가 — GPU 메트릭만 포함</li>
    </ul>
  </li>
  <li><strong>Frontend</strong>:
    <ul>
      <li><code class="language-plaintext highlighter-rouge">MetricGauge</code>에 <code class="language-plaintext highlighter-rouge">percentiles</code> prop 추가 — 게이지 하단에 p95/p99 서브텍스트 + 임계값 초과 시 색상 강조</li>
      <li>시계열 차트에 E2E Latency p95(긴 점선), p99(짧은 점선) 라인 추가</li>
      <li>Ollama 배포 선택 시 추론 메트릭 영역을 안내 메시지로 교체 (GPU 메트릭은 정상 표시)</li>
    </ul>
  </li>
</ul>

<p><strong>버그 수정 (실 환경 테스트 중 발견)</strong>:</p>

<table>
  <thead>
    <tr>
      <th>문제</th>
      <th>원인</th>
      <th>해결</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Ollama 배포에서 메트릭 히스토리 페이지 크래시</td>
      <td>PromQL 매핑이 없는 런타임에서 <code class="language-plaintext highlighter-rouge">timestamps: null</code> 반환 → <code class="language-plaintext highlighter-rouge">null.length</code> 접근</td>
      <td>null 가드 추가</td>
    </tr>
    <tr>
      <td>Ollama 배포에서 GPU 메트릭 미표시</td>
      <td><code class="language-plaintext highlighter-rouge">runtimeQueries</code>에 <code class="language-plaintext highlighter-rouge">"ollama"</code> 키 부재 → <code class="language-plaintext highlighter-rouge">BuildQuery</code>가 GPU 포함 모든 쿼리 스킵</td>
      <td>GPU 전용 ollama 엔트리 추가</td>
    </tr>
  </tbody>
</table>

<p><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">903106c</code>, <code class="language-plaintext highlighter-rouge">01f1a9d</code>, <code class="language-plaintext highlighter-rouge">6ee1328</code>, <code class="language-plaintext highlighter-rouge">8e45905</code> (PR #202, Closes #133)</p>

<hr />

<h2 id="문서화-documentation">문서화 (Documentation)</h2>

<h3 id="1-브랜치-전략-및-릴리즈배포-프로세스-정립-166--pr-203">1. 브랜치 전략 및 릴리즈/배포 프로세스 정립 (#166 → PR #203)</h3>

<p><strong>작성 완료</strong>: 노션 정리 내용 + 이슈 검토 항목 + 기존 프로젝트 문서를 종합 분석하여 H-MAS 프로젝트 맞춤 전략 수립</p>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/operations/BRANCH_RELEASE_STRATEGY.md</code></td>
      <td>신규 — 14개 섹션, <code class="language-plaintext highlighter-rouge">dev/stg/prd</code> 3-브랜치 모델, SemVer + VERSION 파일, 릴리즈 체크리스트, 배포/롤백, CI/CD 확장, Feature Flag, 장애 대응 체크리스트, 도입 시점 판단 기준</td>
      <td><code class="language-plaintext highlighter-rouge">ac3ce99</code> (PR #203)</td>
    </tr>
  </tbody>
</table>

<p><strong>문서 구성 (14개 섹션)</strong>:</p>
<ol>
  <li>배경 — 현재 전략 vs v0.9 변화 요인, 브랜치 모델 비교 및 채택 근거</li>
  <li>브랜치 정책 — 상시 브랜치(dev/stg/prd) + 임시 브랜치, 네이밍 규칙, 보호 규칙</li>
  <li>개발-배포 흐름 — 평소 개발 → 릴리즈 준비 → 운영 배포 → 긴급 대응 다이어그램</li>
  <li>버전 정책 — SemVer, <code class="language-plaintext highlighter-rouge">dev.N</code> / <code class="language-plaintext highlighter-rouge">rc.N</code> 표기, VERSION 파일 운영</li>
  <li>릴리즈 프로세스 — 체크리스트 템플릿, 릴리즈 노트 규칙</li>
  <li>배포 전략 — 파트너별 Helm values, 업그레이드/롤백, DB migration 원칙</li>
  <li>CI/CD 확장 — 현재(v0.4) → 목표(v0.9) 워크플로, main→dev 전환 계획</li>
  <li>버전 지원 정책 — EOL 기준, 구버전 예외 패치 절차</li>
  <li>라이센스와 버전 지원 — 연간 라이센스-지원 범위 관계</li>
  <li>Feature Flag 운영 — 환경별 flag 정책, 관리 규칙</li>
  <li>커밋/PR 규칙 — Conventional Commits, PR 컨벤션</li>
  <li>장애 대응 체크리스트 — 1차 확인 → 즉시 조치 → 수정/배포 흐름</li>
  <li>도입 시점 판단 기준 — 즉시 / 파트너 2곳+ / 팀원 2명+ 단계별 도입</li>
  <li>운영 원칙 요약 — 핵심 규칙 한눈에 보기</li>
</ol>

<h3 id="2-아키텍처설계-문서">2. 아키텍처/설계 문서</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/architecture/MONITORING_ARCHITECTURE.md</code></td>
      <td>모니터링 아키텍처 설계 — Prometheus 경유 결정, 멀티클러스터 Remote Write, 메트릭 정규화</td>
      <td><code class="language-plaintext highlighter-rouge">206cb7a</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/architecture/INFERENCE_PROXY_DESIGN.md</code></td>
      <td>추론 API 프록시 설계 — Phase 1 Push/Phase 2 Pull, 라우팅, SSE 스트리밍</td>
      <td><code class="language-plaintext highlighter-rouge">a01a9cd</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/architecture/xxxxxxx_STATE_MANAGEMENT.md</code></td>
      <td>xxxxxxx 상태 관리 패턴 — Dual-Update, Direct Status Verification, Cross-Validation</td>
      <td><code class="language-plaintext highlighter-rouge">05eaf73</code> (PR #189)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/research/PROMETHEUS_RECORDING_RULES_DESIGN.md</code></td>
      <td>Recording Rules 사전 집계 설계 — v1.0 이후 메트릭 쿼리 최적화</td>
      <td><code class="language-plaintext highlighter-rouge">675e060</code> (PR #200)</td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">docs/product/V09_IMPLEMENTATION_PLAN.md</code></td>
      <td>v0.9 구현 계획 문서</td>
      <td><code class="language-plaintext highlighter-rouge">efe9d00</code></td>
    </tr>
  </tbody>
</table>

<h3 id="3-기존-문서-최신화">3. 기존 문서 최신화</h3>

<table>
  <thead>
    <tr>
      <th>문서</th>
      <th>내용</th>
      <th>관련 커밋</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">README.md</code></td>
      <td>전체 최신화 — 누락 문서 반영 및 v0.4 이후 현황 업데이트</td>
      <td><code class="language-plaintext highlighter-rouge">fc81be4</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">MONITORING_ARCHITECTURE.md</code>, <code class="language-plaintext highlighter-rouge">MONITORING_SETUP_GUIDE.md</code></td>
      <td>실제 구현과 일치하도록 업데이트</td>
      <td><code class="language-plaintext highlighter-rouge">6d43c59</code> (PR #199)</td>
    </tr>
    <tr>
      <td>전체 문서 (다수)</td>
      <td>v0.4 이후 기능 고도화 반영 — 전체 문서 최신화</td>
      <td><code class="language-plaintext highlighter-rouge">875c284</code></td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="리팩토링-refactoring">리팩토링 (Refactoring)</h2>

<h3 id="1-gp-클러스터-타입-표시명-변경">1. GP 클러스터 타입 표시명 변경</h3>

<ul>
  <li>GP 클러스터 타입 표시명 <code class="language-plaintext highlighter-rouge">"General"</code> → <code class="language-plaintext highlighter-rouge">"General Performance"</code> 일괄 변경</li>
  <li><strong>관련 커밋</strong>: <code class="language-plaintext highlighter-rouge">16e8d49</code></li>
</ul>

<hr />

<h2 id="이전-iteration-계획-달성도">이전 Iteration 계획 달성도</h2>

<p>Iteration 17에서 계획한 4개 항목 <strong>1개 완료, 1개 부분 달성, 2개 미착수</strong> — 모니터링 파이프라인(#127 → #196/#197/#198) 전체 구축 및 Pause/Resume(#185) 구현에 집중:</p>

<table>
  <thead>
    <tr>
      <th>계획</th>
      <th>이슈</th>
      <th>상태</th>
      <th>비고</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>서빙 배포 일시정지/재시작 기능 설계</td>
      <td>#185</td>
      <td>완료</td>
      <td>PR #189로 설계 + 구현 + 테스트 완료, xxxxxxx 상태 관리 패턴 문서까지 작성</td>
    </tr>
    <tr>
      <td>추론 API 프록시 구현 — 통합 엔드포인트 설계</td>
      <td>#36</td>
      <td>부분 달성</td>
      <td>설계 문서 <code class="language-plaintext highlighter-rouge">INFERENCE_PROXY_DESIGN.md</code> 작성 완료, 구현 이슈 4건(#191, #192, #193, #194) + UI 이슈(#195)로 분해</td>
    </tr>
    <tr>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH) 구현 착수</td>
      <td>#125</td>
      <td>⏸ 미착수</td>
      <td>모니터링 파이프라인 구축에 우선순위 전환</td>
    </tr>
    <tr>
      <td>xxxxxxxxxxx 스케줄러 리서치 진행</td>
      <td>#179</td>
      <td>⏸ 미착수</td>
      <td>모니터링 파이프라인 구축에 우선순위 전환</td>
    </tr>
  </tbody>
</table>

<p><strong>추가 달성</strong>: 계획에 없던 모니터링 파이프라인 전체 구축(#127의 서브이슈 #196→#197→#198 순차 완주), 대시보드 Latency p95/p99 + Ollama 안내(#133 완료), 브랜치/릴리즈 전략 문서(#166 완료), v0.9 구현 계획 문서, 아키텍처 설계 문서 3건, h-mas-agent 이슈(#190) 생성. 목 데이터 기반이던 대시보드를 Prometheus 실데이터 기반으로 전면 전환하여 운영 가시성을 확보.</p>

<hr />

<h2 id="미해결-이슈-open-issues">미해결 이슈 (Open Issues)</h2>

<h3 id="신규-이슈-9개-이번-iteration-생성">신규 이슈 (9개, 이번 Iteration 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>라벨</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#195</td>
      <td>프론트엔드: 추론 테스트 UI (Chat 인터페이스)</td>
      <td>frontend</td>
    </tr>
    <tr>
      <td>#194</td>
      <td>추론 API 키 인증 및 Rate Limiting</td>
      <td>backend, frontend</td>
    </tr>
    <tr>
      <td>#193</td>
      <td>추론 요청 로깅 및 메트릭 수집 파이프라인</td>
      <td>backend</td>
    </tr>
    <tr>
      <td>#192</td>
      <td>추론 프록시 Phase 2: 멀티클러스터 라우팅 (agent 터널 통합)</td>
      <td>backend, agent</td>
    </tr>
    <tr>
      <td>#191</td>
      <td>추론 프록시 Phase 1: 기본 프록시 구현 (Push 모드)</td>
      <td>backend</td>
    </tr>
    <tr>
      <td>#190</td>
      <td>h-mas-agent 핵심 컴포넌트 구현</td>
      <td>agent</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#191→#192→#193→#194는 #36(추론 API 프록시)의 단계별 구현 이슈 체인으로, 이번 iteration에 <code class="language-plaintext highlighter-rouge">INFERENCE_PROXY_DESIGN.md</code> 설계 문서를 기반으로 분해</p>
</blockquote>

<h3 id="런타임-자동-튜닝-관련-선행-조건-이슈-체인-5개">런타임 자동 튜닝 관련 선행 조건 이슈 체인 (5개)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
      <th>역할</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#125</td>
      <td>서빙 배포 인플레이스 업데이트 API (PATCH)</td>
      <td>파라미터 변경 API</td>
    </tr>
    <tr>
      <td>#126</td>
      <td>서빙 배포 파라미터 변경 시 Rolling Restart 파이프라인</td>
      <td>안전한 재시작</td>
    </tr>
    <tr>
      <td>#127</td>
      <td><del>서빙 런타임 메트릭 수집 파이프라인 구축</del></td>
      <td><strong>이번 iteration 완료</strong></td>
    </tr>
    <tr>
      <td>#128</td>
      <td>서빙 최적화 파라미터 변경 이력 관리 및 감사 로그</td>
      <td>변경 추적/롤백</td>
    </tr>
    <tr>
      <td>#114</td>
      <td>런타임 자동 튜닝 (메트릭 기반 파라미터 자동 조정)</td>
      <td>최종 목표 — 위 4개 이슈 모두 선행</td>
    </tr>
  </tbody>
</table>

<h3 id="프리셋-확장-이슈-3개">프리셋 확장 이슈 (3개)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#120</td>
      <td>DB 기반 최적화 프리셋 관리 (CRUD API + UI)</td>
    </tr>
    <tr>
      <td>#122</td>
      <td>사용자 정의 최적화 프리셋 CRUD (DB 기반)</td>
    </tr>
    <tr>
      <td>#123</td>
      <td>프리셋 벤치마크 인프라 및 GPU 스펙별 최적화 값 분기</td>
    </tr>
  </tbody>
</table>

<h3 id="대시보드-v09-이슈-1개">대시보드 v0.9 이슈 (1개)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#134</td>
      <td>대시보드 GPU 토폴로지 컴팩트 위젯 실데이터 연동 (h-mas-agent)</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>#133(대시보드 실시간 GPU 사용률 및 추론 메트릭)은 <strong>이번 iteration PR #202로 완료</strong></p>
</blockquote>

<h3 id="리서치-이슈-4개-iteration-17에서-생성">리서치 이슈 (4개, Iteration 17에서 생성)</h3>

<table>
  <thead>
    <tr>
      <th>이슈</th>
      <th>제목</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>#186</td>
      <td>리서치: 서버리스 서빙(Scale-to-Zero) 방식 분석 및 H-MAS 적용 가능성 검토</td>
    </tr>
    <tr>
      <td>#184</td>
      <td>리서치: 폐쇄망(Air-Gapped) 환경 배포 전략 수립</td>
    </tr>
    <tr>
      <td>#179</td>
      <td>리서치: xxxxxxxxxxx 스케줄러 도입을 위한 기술 조사 및 통합 설계</td>
    </tr>
    <tr>
      <td>#96</td>
      <td>리서치: GPU 메모리 인지형 동적 모델 Bin Packing 전략</td>
    </tr>
  </tbody>
</table>

<h3 id="기존-미해결-이슈-이전-iteration에서-이관">기존 미해결 이슈 (이전 Iteration에서 이관)</h3>

<h3 id="1-스케줄러-어노테이션-변환-xxxxxxxxxxxxxx--xxxxxxx-overridepolicy-66">1. 스케줄러 어노테이션 변환 (xxx/xxxxxxxxxxx → xxxxxxx OverridePolicy) (#66)</h3>

<ul>
  <li>#179 xxxxxxxxxxx 리서치 이슈와 연계하여 검토 예정</li>
</ul>

<h3 id="2-모델-프리셋-리스트-최신화-62">2. 모델 프리셋 리스트 최신화 (#62)</h3>

<ul>
  <li>잔여 작업: 최신 모델 시드 데이터 추가 필요</li>
</ul>

<h3 id="3-failover--재배치-정책-구현-39--v095-마일스톤">3. Failover / 재배치 정책 구현 (#39) — v0.95 마일스톤</h3>

<h3 id="4-numa--토폴로지-인식-스케줄링-구현-38--v095-마일스톤">4. NUMA / 토폴로지 인식 스케줄링 구현 (#38) — v0.95 마일스톤</h3>

<h3 id="5-추론-api-프록시-구현--통합-엔드포인트-36">5. 추론 API 프록시 구현 — 통합 엔드포인트 (#36)</h3>

<ul>
  <li>설계 문서 완료, Phase 1~4 이슈(#191~#194)로 분해 완료, Phase 1 구현 착수 예정</li>
</ul>

<hr />

<h2 id="이번-주-통계">이번 주 통계</h2>

<table>
  <thead>
    <tr>
      <th>항목</th>
      <th>수치</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>총 커밋 수</td>
      <td>23개 (+ merge 5건)</td>
    </tr>
    <tr>
      <td>머지된 PR</td>
      <td>6개 (#189, #199, #200, #201, #202, #203)</td>
    </tr>
    <tr>
      <td>생성된 이슈</td>
      <td>9개 (#190, #191, #192, #193, #194, #195, #196, #197, #198)</td>
    </tr>
    <tr>
      <td>해결된 이슈</td>
      <td>7개 (#127, #133, #166, #185, #196, #197, #198)</td>
    </tr>
    <tr>
      <td>미해결 이슈</td>
      <td>23개 (#36, #38, #39, #62, #66, #96, #114, #120, #122, #123, #125, #126, #128, #134, #179, #184, #186, #190, #191, #192, #193, #194, #195)</td>
    </tr>
    <tr>
      <td>신규 기술 문서</td>
      <td>6개 (브랜치/릴리즈 전략, 모니터링 아키텍처, 추론 프록시 설계, xxxxxxx 상태 관리, Recording Rules, v0.9 구현 계획)</td>
    </tr>
    <tr>
      <td>코드 변경량</td>
      <td>+5,849줄 / -502줄 (85개 파일)</td>
    </tr>
  </tbody>
</table>

<hr />

<h2 id="결론">결론</h2>

<p>이번 주는 <strong>서빙 런타임 메트릭 수집 파이프라인(#127)을 인프라→Backend→Frontend 3단계로 1주일 만에 완주하여 운영 모니터링 가시성을 확보한 기간</strong>이었습니다. Prometheus Server/Agent/DCGM Exporter 기반 멀티클러스터 메트릭 인프라(#196)를 구축하고, PromQL 연동 Backend API(#197)로 런타임별 메트릭을 정규화하며, 13개 신규 프론트엔드 컴포넌트(#198)로 목 데이터를 실데이터로 전면 교체했습니다.</p>

<p>배포 일시정지/재시작(#185)에서는 xxxxxxx Dual-Update 패턴을 적용하여 전파 지연 문제를 해결했고, 이를 <code class="language-plaintext highlighter-rouge">xxxxxxx_STATE_MANAGEMENT.md</code> 패턴 문서로 정리하여 향후 유사 기능 구현의 참조 아키텍처를 마련했습니다. Latency p95/p99 분할 표시 및 Ollama 런타임 안내(#133)로 대시보드 메트릭 이슈를 마무리하고, 브랜치/릴리즈 전략 문서(#166)로 장기 미해결 운영 이슈를 클로즈했습니다.</p>

<p>추론 API 프록시(#36)는 설계 문서와 4단계 구현 이슈로 분해하여 Phase 1 착수를 준비했고, h-mas-agent(#190) 이슈를 생성하여 Pull 모드 클러스터 지원의 기반을 마련했습니다.</p>

<p><strong>핵심 성과</strong>:</p>
<ol>
  <li><strong>메트릭 수집 파이프라인 완주</strong>: #127(상위 이슈) + 3개 서브이슈(#196→#197→#198) — Prometheus 인프라, Backend PromQL API, Frontend 13개 컴포넌트</li>
  <li><strong>대시보드 Latency p95/p99</strong>: 게이지 퍼센타일 분할 + 시계열 점선 + Ollama 안내 — #133 완료</li>
  <li><strong>배포 일시정지/재시작</strong>: xxxxxxx Dual-Update + Reconciler 교차 검증 — #185 완료</li>
  <li><strong>브랜치/릴리즈 전략</strong>: 14개 섹션, 3-브랜치 모델 + SemVer + 장애 대응 체크리스트 — #166 완료</li>
  <li><strong>추론 프록시 설계</strong>: <code class="language-plaintext highlighter-rouge">INFERENCE_PROXY_DESIGN.md</code> + Phase 1~4 이슈 분해 — #36 착수 준비 완료</li>
  <li><strong>v0.9 방향 구체화</strong>: 구현 계획 문서, 아키텍처 설계 문서 3건, h-mas-agent 이슈 생성</li>
</ol>

<p><strong>다음 주 계획</strong>:</p>
<ul>
  <li>추론 프록시 Phase 1 구현 착수 (#191) — Push 모드 기본 프록시</li>
  <li>서빙 배포 인플레이스 업데이트 API (PATCH) 구현 (#125)</li>
  <li>추론 테스트 UI (Chat 인터페이스) 구현 (#195)</li>
  <li>h-mas-agent 설계 상세화 (#190)</li>
</ul>

<hr />

<p><strong>문서 작성일</strong>: 2026년 4월 19일</p>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="H-MAS" /><category term="MLOps" /><category term="GPU" /><category term="Scheduling" /><category term="K8s" /><category term="Inference" /><summary type="html"><![CDATA[H-MAS 주간 작업 노트 2026년 4월 12일 - 4월 18일 (Iteration 18)]]></summary></entry><entry><title type="html">AI Weekly Picks(16주차)</title><link href="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202616/" rel="alternate" type="text/html" title="AI Weekly Picks(16주차)" /><published>2026-04-13T00:00:00+00:00</published><updated>2026-04-13T00:00:00+00:00</updated><id>https://parameterfreak.com/posts/2026/04/ai-weekly-picks</id><content type="html" xml:base="https://parameterfreak.com/posts/2026/04/ai-weekly-picks-202616/"><![CDATA[<h1 id="ai-daily-picks20260415">AI Daily Picks(20260415)</h1>

<ul>
  <li><a href="https://llm-d.ai/blog/kvcache-wins-you-can-see">KV-Cache Wins You Can See: From Prefix Caching in vLLM to Distributed Scheduling with llm-d</a>
    <ul>
      <li>LLM inference 환경에서 KV-Cache hit rate은 성능(지연 시간)과 비용(최대 10배 차이)에 직결되는 핵심 지표이며 대화형 AI나 에이전트 워크플로우같이 접두사(Prefix)가 긴 패턴에서 그 중요성이 더욱 부각됨.</li>
      <li>단일 인스턴스의 vLLM 캐싱 효과는 분산 환경 로드밸런싱 과정에서 무력화되기 쉬우나, llm-d는 vLLM 포드들의 KVEvents를 통해 실시간 글로벌 캐시 뷰를 구축하여 문제를 해결함.</li>
      <li>구축된 뷰를 바탕으로 한 Precise Prefix-Cache Aware 스케줄링으로 캐시 재사용을 극대화하여, 기존의 근사치 기반/부하 기반 스케줄러 대비 응답 속도(TTFT)를 최대 57배 높이고 시스템 처리량을 2배 이상 향상시킴.</li>
    </ul>
  </li>
  <li><a href="https://developer.nvidia.com/blog/accelerate-large-scale-llm-inference-and-kv-cache-offload-with-cpu-gpu-memory-sharing">Accelerate Large-Scale LLM Inference and KV Cache Offload with CPU-GPU Memory Sharing</a>
    <ul>
      <li>NVIDIA Grace Blackwell 및 Grace Hopper 아키텍처는 NVLink-C2C를 통해 CPU와 GPU 간 통합 메모리 주소 공간을 제공하여 명시적인 데이터 전송 없이 메모리를 공유함.</li>
      <li>Llama 3 70B와 같은 대규모 LLM은 추론 시 GPU 메모리(예: GH200의 96GB) 한계를 넘어 OOM(Out-of-Memory) 에러를 발생시키기 쉬움.</li>
      <li>RAPIDS Memory Manager (RMM) 라이브러리를 활용해 관리 메모리(managed memory)를 할당하면 CPU 메모리(최대 480GB)와 GPU 메모리를 함께 사용하여 물리적 GPU 메모리 한계를 극복하고 대규모 모델 추론이 가능함.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260414">AI Daily Picks(20260414)</h1>

<ul>
  <li><a href="https://arxiv.org/html/2401.00368v1">Improving Text Embeddings with Large Language Models</a>
    <ul>
      <li>복잡한 파이프라인이나 수작업 레이블 데이터에 의존하지 않고, LLM을 활용해 합성 데이터(Synthetic Data)만으로 고품질 텍스트 임베딩 모델을 학습시키는 방법을 제안했습니다.</li>
      <li>93개 언어 및 수십만 개의 임베딩 태스크를 아우르는 합성 데이터를 통해 기존 임베딩 모델들의 제약(언어 편중 및 태스크 제한 등)을 효과적으로 극복했습니다.</li>
      <li>합성 데이터만을 사용하여 Mistral-7B 모델을 파인튜닝하는 방식으로 기존 모델에 필적하는 경쟁력을 입증했으며, 다른 레이블 데이터와 혼합 시 BEIR 및 MTEB 등 주요 벤치마크에서 SOTA(최고 성능)를 달성했습니다.</li>
    </ul>
  </li>
  <li><a href="https://siliconangle.com/2026/01/15/mongodb-combines-database-embedding-models-simplified-ai-development/">MongoDB combines database and embedding models for simplified AI development - SiliconANGLE</a>
    <ul>
      <li>MongoDB는 AI 개발자들이 애플리케이션을 프로토타입에서 프로덕션으로 빠르게 전환할 수 있도록 자사의 핵심 데이터베이스와 작년에 인수한 Voyage AI의 임베딩 기술을 긴밀하게 통합했다고 발표했습니다.</li>
      <li>Voyage 4 계열 모델(voyage-4, voyage-4-large, voyage-4-lite, 모델 가중치가 공개된 로컬 테스트를 위한 voyage-4-nano)을 API를 통해 MongoDB Atlas와 온프레미스 커뮤니티 에디션에서 텍스트 및 여러 형식 간의 검색(voyage-multimodal-3.5)을 위해 지원합니다.</li>
      <li>퍼블릭 프리뷰 상태로 출시된 ‘자동 임베딩’ 기능은 데이터 삽입이나 쿼리 시 자동으로 임베딩을 생성 및 저장하여, 개발자가 별도의 임베딩 파이프라인이나 벡터 DB를 관리할 필요성을 줄이고 운영 위험과 지연 시간을 낮출 수 있게 해줍니다.</li>
    </ul>
  </li>
  <li><a href="https://dmsretail.com/RetailNews/fine-tuning-embedding-models-for-enterprise-retrieval-a-practical-guide-with-nvidia-nemotron-recipe/">Fine-Tuning Embedding Models for Enterprise Retrieval: A Practical Guide with NVIDIA Nemotron Recipe - Retail News &amp; More</a>
    <ul>
      <li>Cisco는 NVIDIA Nemotron RAG 파인튜닝 레시피를 활용해 수작업 데이터 레이블링 없이 생성된 합성 데이터(SDG)만으로 엔터프라이즈 도메인 특화 임베딩 모델(NV-EmbedQA)을 성공적으로 파인튜닝했습니다.</li>
      <li>단일 GPU 인프라(Cisco AI Pods, NVIDIA H200) 환경에서 모델 학습이 진행되어 데이터 보안을 유지하고 외부 API 비용을 없앴으며, 전체 파이프라인을 단 통상 몇 시간부터 며칠 내 완료해 빠른 가치 검증을 도출해냈습니다.</li>
      <li>베이스 임베딩 모델과 비교해 주요 검색 지표(NDCG@1, Recall@10 등) 전반에서 눈에 띄는 성능 개선을 달성했으며, 특히 특정 도메인 질의에서의 검색 품질이 상당히 향상되었음을 확인했습니다.</li>
    </ul>
  </li>
  <li><a href="https://crewai.com/blog/the-state-of-agentic-ai-in-2026">The state of agentic AI in 2026</a>
    <ul>
      <li>에이전틱 AI(Agentic AI)는 단순한 실험 단계를 넘어 프로덕션 도입의 최우선 순위로 자리잡았으며, 조사 대상 기업의 100%가 2026년에 활용 수준을 확대할 계획이고 74%는 이를 전략적 필수 과제로 인식하고 있습니다.</li>
      <li>기업 리더들은 플랫폼 평가 시 즉각적인 ROI보다는 보안과 거버넌스(34%), 기존 시스템과의 통합(30%), 안정성 및 평가 지표(24%) 등 신뢰성 및 운영 준비도를 최우선으로 고려합니다.</li>
      <li>데이터 부족과 전문 인력 한계 같은 확장성의 장벽이 존재하지만 절반 이상의 조직(57%)이 시스템 종속성이 없는 오픈 소스 기반 도구 확장을 선호하며, 시간 절약 및 운영 비용 절감 등 실질적인 혜택을 전사적으로 경험하고 있습니다.</li>
    </ul>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[Linux lays down the law on AI-generated code, says yes to Copilot, no to AI slop, and humans take the fall for mistakes - after months of fierce debate, Torvalds and maintainers come to an agreement</td>
          <td>Tom’s Hardware](https://www.tomshardware.com/software/linux/linux-lays-down-the-law-on-ai-generated-code-yes-to-copilot-no-to-ai-slop-and-humans-take-the-fall-for-mistakes-after-months-of-fierce-debate-torvalds-and-maintainers-come-to-an-agreement)</td>
        </tr>
      </tbody>
    </table>
    <ul>
      <li>리눅스 커널 커뮤니티가 AI 생성 코드에 대한 공식 정책을 수립하여 AI 도구 활용을 공식적으로 허용하되 엄격한 투명성과 책임 규정을 적용하기로 합의했습니다.</li>
      <li>제출자는 의무적으로 “Assisted-by” 태그를 사용하여 AI의 코드 지원 내역을 명시해야 하며, 코드의 최종 품질이나 잠재적인 버그 문제에 대한 모든 책임은 코드를 제출한 인간 개발자에게 있습니다.</li>
      <li>AI 코드를 전면 금지하는 다른 오픈소스 프로젝트와 달리, “AI는 일종의 도구일 뿐”이라는 기조 하에 도구 통제보다는 제출자의 책임 소재 확립에 집중하는 실용적인 정책을 도입했습니다.</li>
    </ul>
  </li>
</ul>

<h1 id="ai-daily-picks20260413">AI Daily Picks(20260413)</h1>

<ul>
  <li><a href="https://nerdleveltech.com/google-turboquant-kv-cache-compression-llm-inference">Google’s TurboQuant: 6x Less Memory for LLM Inference (2026) - Nerd Level Tech</a>
    <ul>
      <li>구글 연구진이 발표한 TurboQuant 알고리즘은 LLM의 주요 메모리 병목인 KV 캐시를 정확도 손실 없이 3비트로 압축하여 메모리 사용량을 최대 6배 감소시킴.</li>
      <li>무작위 직교 회전(Random Orthogonal Rotation)으로 좌표 구성을 균일하게 한 후 Lloyd-Max 최적 양자화를 적용하며, QJL을 통해 에러를 교정하는 과정으로 데이터나 아키텍처 의존성 없이 압축 효율성을 달성.</li>
      <li>평가 벤치마크(LongBench 등)에서 기준점과 동등한 점수를 기록하였으며, H100 환경에서 어텐션 로짓 계산 속도를 8배 향상시켜 저렴한 환경에서 긴 컨텍스트 모델 구동을 가능하게 함.</li>
    </ul>
  </li>
  <li><a href="https://blogs.bing.com/search/April-2026/Microsoft-Open-Sources-Industry-Leading-Embedding-Model">Microsoft Open-Sources Industry-Leading Embedding Model</a>
    <ul>
      <li>마이크로소프트가 검색 품질 향상 및 차세대 AI 에이전트를 위한 강력한 다국어 텍스트 임베딩 모델 ‘Harrier(Harrier-OSS-v1)’ 제품군을 오픈소스로 공개함.</li>
      <li>100개 이상의 언어 지원과 32k 토큰의 긴 컨텍스트 윈도우 처리가 가능하며, Multilingual MTEB v2 벤치마크 평가에서 기존 주요 모델(Gemini Embedding 2 등)을 크게 능가하는 SOTA 성능을 기록함.</li>
      <li>GPT-5를 활용한 합성 데이터 생성과 20억 쌍의 사전 학습을 거쳤으며, 최고 성능의 27B 모델로부터 소형 모델(0.6B, 270M)로 지식 증류(Knowledge Distillation)를 진행해 매개변수 대비 극대화된 효율성을 확보함.</li>
    </ul>
  </li>
</ul>]]></content><author><name>{&quot;avatar&quot;=&gt;nil, &quot;name&quot;=&gt;nil, &quot;pronouns&quot;=&gt;nil, &quot;bio&quot;=&gt;nil, &quot;location&quot;=&gt;nil, &quot;employer&quot;=&gt;nil, &quot;uri&quot;=&gt;nil, &quot;email&quot;=&gt;&quot;parameterfreak@gmail.com&quot;, &quot;academia&quot;=&gt;nil, &quot;arxiv&quot;=&gt;nil, &quot;googlescholar&quot;=&gt;nil, &quot;inspire-hep&quot;=&gt;nil, &quot;impactstory&quot;=&gt;nil, &quot;orcid&quot;=&gt;nil, &quot;semantic&quot;=&gt;nil, &quot;pubmed&quot;=&gt;nil, &quot;researchgate&quot;=&gt;nil, &quot;scopus&quot;=&gt;nil, &quot;bitbucket&quot;=&gt;nil, &quot;codepen&quot;=&gt;nil, &quot;dribbble&quot;=&gt;nil, &quot;github&quot;=&gt;nil, &quot;kaggle&quot;=&gt;nil, &quot;stackoverflow&quot;=&gt;nil, &quot;artstation&quot;=&gt;nil, &quot;bluesky&quot;=&gt;nil, &quot;facebook&quot;=&gt;nil, &quot;flickr&quot;=&gt;nil, &quot;foursquare&quot;=&gt;nil, &quot;goodreads&quot;=&gt;nil, &quot;google_plus&quot;=&gt;nil, &quot;keybase&quot;=&gt;nil, &quot;instagram&quot;=&gt;nil, &quot;lastfm&quot;=&gt;nil, &quot;linkedin&quot;=&gt;nil, &quot;mastodon&quot;=&gt;nil, &quot;medium&quot;=&gt;nil, &quot;pinterest&quot;=&gt;nil, &quot;soundcloud&quot;=&gt;nil, &quot;steam&quot;=&gt;nil, &quot;telegram&quot;=&gt;nil, &quot;tumblr&quot;=&gt;nil, &quot;twitter&quot;=&gt;nil, &quot;vine&quot;=&gt;nil, &quot;weibo&quot;=&gt;nil, &quot;wikipedia&quot;=&gt;nil, &quot;xing&quot;=&gt;nil, &quot;youtube&quot;=&gt;nil, &quot;zhihu&quot;=&gt;nil}</name><email>parameterfreak@gmail.com</email></author><category term="Misc" /><category term="AI" /><category term="News" /><category term="Reference" /><summary type="html"><![CDATA[AI Daily Picks(20260415)]]></summary></entry></feed>