<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vidraft_lab</title>
    <description>The latest articles on DEV Community by Vidraft_lab (@vidraft_lab).</description>
    <link>https://dev.to/vidraft_lab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3850609%2Fe74d42e1-1b18-4f0c-b7c5-7e5faf348367.png</url>
      <title>DEV Community: Vidraft_lab</title>
      <link>https://dev.to/vidraft_lab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vidraft_lab"/>
    <language>en</language>
    <item>
      <title>AI가 스스로 해킹하는 시대, 내 웹사이트는 안전할까? 무료 1분 보안·SEO·AI 가시성 점검법</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Tue, 27 Oct 2026 06:35:53 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/aiga-seuseuro-haekinghaneun-sidae-nae-websaiteuneun-anjeonhalgga-muryo-1bun-boanseoai-gasiseong-jeomgeombeob-7oc</link>
      <guid>https://dev.to/vidraft_lab/aiga-seuseuro-haekinghaneun-sidae-nae-websaiteuneun-anjeonhalgga-muryo-1bun-boanseoai-gasiseong-jeomgeombeob-7oc</guid>
      <description>&lt;p&gt;요즘 보안 뉴스를 보면 한 가지 변화가 분명합니다. 공격이 사람 손을 떠나 &lt;strong&gt;AI 에이전트의 자동 작업&lt;/strong&gt;으로 옮겨가고 있다는 점입니다. 2026년에는 오픈소스로 공개된 AI 침투 에이전트 'ARTEX'가 실제 공격에 동원되면서, 마이크로소프트 365 계정 수천 곳을 노리고 전자상거래 주문 데이터베이스를 침해하는 사건이 전 세계에서 보고됐습니다. 공통점은 단순합니다. &lt;strong&gt;인터넷에 노출된 채 방치된, 패치되지 않은 시스템과 허술한 웹 보안 위생&lt;/strong&gt;이 입구가 됐다는 것입니다.&lt;/p&gt;

&lt;p&gt;좋은 소식은, 공격이 자동화된 만큼 &lt;strong&gt;방어도 자동화&lt;/strong&gt;할 수 있다는 점입니다. 그리고 그 첫걸음인 '내 사이트가 지금 어떤 상태인지' 확인하는 일은 1분이면 충분합니다. 이 글에서는 어려운 용어를 걷어내고, 내 웹사이트의 보안과 검색 노출, 그리고 요즘 중요해진 'AI 가시성'을 어떻게 무료로 점검하는지 쉽게 설명합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2Fdatasets%2FVIDraft%2Fpress-assets%2Fresolve%2Fmain%2Fwebsec%2Ffreeweb_scan_social_1080.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2Fdatasets%2FVIDraft%2Fpress-assets%2Fresolve%2Fmain%2Fwebsec%2Ffreeweb_scan_social_1080.png" alt="무료 웹 보안 1분 점검" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  먼저, 자주 나오는 용어를 생활 비유로
&lt;/h2&gt;

&lt;p&gt;보안 리포트에 자주 등장하는 말들을 집과 가게에 빗대어 보겠습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;보안 응답 헤더&lt;/strong&gt;: 건물의 출입문 잠금장치와 CCTV입니다. 이게 없으면 문을 열어둔 채 장사하는 셈입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTPS&lt;/strong&gt;: 편지를 봉투에 넣어 보내느냐(HTTPS), 내용이 다 보이는 엽서로 보내느냐(HTTP)의 차이입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SPF, DKIM, DMARC&lt;/strong&gt;: 우리 회사 이름으로 나가는 메일의 '신분증'입니다. 이게 없으면 누군가 우리 도메인을 사칭해 고객에게 피싱 메일을 보내기 쉬워집니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TLS 인증서 유효기간&lt;/strong&gt;: 가게의 영업 허가증입니다. 만료되면 손님(방문자)이 들어오려다 '위험한 사이트' 경고를 보고 발길을 돌립니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;혼합 콘텐츠&lt;/strong&gt;: 튼튼한 금고에 난 작은 구멍입니다. 잠긴 페이지(HTTPS) 안에 잠기지 않은 자원(HTTP)이 섞여 있는 상태입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI 가시성(GEO)&lt;/strong&gt;: 챗GPT나 퍼플렉시티가 우리 가게를 손님에게 추천하려면, 먼저 가게 안에 들어와 둘러볼 수 있어야 합니다. 그 '출입 가능 여부'를 뜻합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  왜 'AI 가시성'이 갑자기 중요해졌나
&lt;/h2&gt;

&lt;p&gt;예전에는 사람들이 검색창에 키워드를 넣고 결과를 클릭했습니다. 지금은 점점 더 많은 사람이 챗GPT, 클로드, 퍼플렉시티에게 질문하고 '답'을 바로 받습니다. 이때 AI가 어떤 회사를 인용하고 추천하는지가 새로운 노출 경쟁의 핵심이 됐습니다.&lt;/p&gt;

&lt;p&gt;문제는, 많은 사이트가 자신도 모르게 이 AI 로봇들을 막아두고 있다는 점입니다. robots.txt에는 '환영'이라고 적어두고도, 방화벽이나 CDN 설정이 특정 AI 로봇의 접근을 조용히 차단하고 있는 경우가 흔합니다. 그러면 AI는 우리 사이트를 읽지 못하고, 대신 경쟁사를 인용합니다. 열어둔 줄 알았는데 닫혀 있는 셈입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  1분이면 되는 무료 점검
&lt;/h2&gt;

&lt;p&gt;주소만 넣으면 약 10초에서 25초 안에, 공격이나 부하 없이 &lt;strong&gt;읽기 전용(비침투)&lt;/strong&gt; 으로 내 사이트 상태를 확인할 수 있는 무료 도구가 있습니다. 설치도, 로그인도, 신용카드도 필요 없습니다.&lt;/p&gt;

&lt;p&gt;점검 결과는 세 축으로 요약됩니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;보안&lt;/strong&gt;: 잠금장치(보안 헤더)가 몇 개나 켜져 있는지, HTTPS와 인증서가 건강한지, 민감한 설정 파일이 실수로 공개돼 있지는 않은지.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;검색(SEO) 토대&lt;/strong&gt;: 제목, 설명, 구조화 데이터처럼 검색에 노출되기 위한 기본기가 갖춰져 있는지.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI 가시성(GEO)&lt;/strong&gt;: 구글, 빙, 네이버는 물론 GPTBot, ClaudeBot, PerplexityBot 같은 &lt;strong&gt;AI 로봇 9종&lt;/strong&gt;이 실제로 내 사이트에 들어올 수 있는지.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;각 항목은 '통과, 보완 필요, 실패'로 한눈에 표시되고, 가장 급한 것부터 순서대로 정리해 줍니다. 전문 용어를 몰라도 '무엇을, 왜 고쳐야 하는지'를 쉬운 문장으로 알려줍니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  홈페이지 한 장 너머, 더 깊이 보고 싶다면
&lt;/h2&gt;

&lt;p&gt;회사나 조직의 도메인 메일로 가입한 계정으로 소유를 확인하면, 홈 한 페이지가 아니라 &lt;strong&gt;사이트 전체&lt;/strong&gt;를 점검하는 심화 리포트가 열립니다. 여기서는 한층 전문적인 항목까지 들여다봅니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;이메일 보안 심화&lt;/strong&gt;: 발신 신분증(SPF)의 강도, 서명(DKIM) 적용 여부, 사칭 차단 정책(DMARC)이 '감시만'인지 '차단'까지인지, 그리고 BIMI, MTA-STS 같은 최신 보호 장치.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;도메인 보안&lt;/strong&gt;: DNSSEC, CAA처럼 도메인 자체를 위변조로부터 지키는 장치들.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;사이트 전체 일관성&lt;/strong&gt;: 모든 페이지가 빠짐없이 HTTPS와 보안 헤더를 쓰는지, 외부에서 들여온 스크립트에 '봉인'이 돼 있는지, 민감정보로 보이는 패턴이 노출돼 있지는 않은지.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 모든 점검은 끝까지 &lt;strong&gt;읽기 전용&lt;/strong&gt;입니다. 남의 사이트를 함부로 들여다보는 일은 허용되지 않으며, 실제 침투가 필요한 정밀 점검은 소유자의 서면 허가 아래에서만 진행됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  결과를 받았다면, 이렇게 활용하세요
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;빨간불(높음)부터&lt;/strong&gt; 처리합니다. 공개된 민감 파일, 만료가 임박한 인증서처럼 즉시 손봐야 하는 것들입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;노란불(보완)&lt;/strong&gt; 을 다음 순서로 정리합니다. 보안 헤더 보강, 메일 사칭 방지 설정 같은 항목입니다.&lt;/li&gt;
&lt;li&gt;비침투 점검은 '밖에서 보이는 표면'까지라는 점을 기억하세요. 실제로 뚫리는지(SQL 삽입, 인증 우회 등)와 AI 에이전트가 자동으로 파고드는 위협은, 허가 기반의 정밀 진단으로 한 걸음 더 들어가야 확인됩니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  마무리
&lt;/h2&gt;

&lt;p&gt;보안은 한 번 끝내는 일이 아니라, 배포할 때마다 조용히 흐트러지기 쉬운 '위생'에 가깝습니다. 자동화된 공격이 일상이 된 지금, 가장 현실적인 출발점은 '내 사이트가 지금 어떤 상태인지'를 아는 것입니다. 1분이면 됩니다.&lt;/p&gt;

&lt;p&gt;👉 지금 무료로 점검해 보세요: &lt;a href="https://huggingface.co/spaces/FINAL-Bench/FreeWeb-Security-SCAN" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/FINAL-Bench/FreeWeb-Security-SCAN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;참고: 본 점검은 비침투(읽기 전용)로 수행되며 대상 사이트에 영향을 주지 않습니다. 점검의 내부 방법론은 공개하지 않으며, 본 글은 공개된 보안 기준에 대한 쉬운 설명을 목적으로 합니다.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;정말 무료인가요?&lt;/strong&gt;&lt;br&gt;
네. 설치, 로그인, 신용카드 없이 주소만 넣으면 됩니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;점검이 제 사이트에 영향을 주나요?&lt;/strong&gt;&lt;br&gt;
아니요. 공개된 페이지를 읽기만 하는 비침투 점검이라 공격이나 부하를 주지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;어떤 AI 로봇의 접근을 확인하나요?&lt;/strong&gt;&lt;br&gt;
GPTBot, ClaudeBot, PerplexityBot 등 AI 로봇 9종과 구글·빙·네이버 검색 로봇입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;남의 사이트도 점검할 수 있나요?&lt;/strong&gt;&lt;br&gt;
홈 한 페이지의 공개 표면 점검만 가능합니다. 사이트 전체 심화 점검은 도메인 소유 확인 후에만 열립니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  더 읽을거리
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/ai-dibtekeuneun-airo-eoddeohge-ilhaneunga-bideuraepeuteu-ai-native-5gyeceung-gujo-haeseol-5cj3"&gt;AI 딥테크는 AI로 어떻게 일하는가: 비드래프트 AI NATIVE 5계층 구조 해설&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/owasp-benchmark-528jeomi-778jeomi-doen-iyu-ai-geomjeungceungi-geojis-yangseongeul-julimyeon-jeomsuga-umjigineun-sansul-2ice"&gt;OWASP Benchmark 52.8점이 77.8점이 된 이유&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>seo</category>
      <category>korean</category>
    </item>
    <item>
      <title>추론 전용 NPU로 LLM 사전학습이 가능할까? 3억 2,500만 파라미터를 0부터 학습해 B200과 같은 품질을 냈다</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Mon, 26 Oct 2026 05:53:34 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/curon-jeonyong-npuro-llm-sajeonhagseubi-ganeunghalgga-3eog-2500man-paramiteoreul-0buteo-hagseubhae-b200gwa-gateun-pumjileul-naessda-3ig3</link>
      <guid>https://dev.to/vidraft_lab/curon-jeonyong-npuro-llm-sajeonhagseubi-ganeunghalgga-3eog-2500man-paramiteoreul-0buteo-hagseubhae-b200gwa-gateun-pumjileul-naessda-3ig3</guid>
      <description>&lt;h2&gt;
  
  
  요약
&lt;/h2&gt;

&lt;p&gt;가능합니다. 단, 학습용 소프트웨어를 따로 만들어야 합니다. 비드래프트는 3억 2,560만 파라미터 언어모델 &lt;strong&gt;VKORE-325M-NPU-Base&lt;/strong&gt;를 무작위 초기값에서 출발해 &lt;strong&gt;리벨리온 ATOM-Max&lt;/strong&gt;(2025년 출시된 상용 추론 전용 NPU)로 사전학습했습니다. 같은 모델을 &lt;strong&gt;B200 GPU&lt;/strong&gt;로도 학습해 비교했습니다. 두 모델 모두 학습에 한 번도 쓰지 않은 텍스트 1,024개 구간에서 평가했고, 손실은 &lt;strong&gt;NPU 0.7993, GPU 0.7994&lt;/strong&gt;였습니다. 두 모델의 가중치와 평가 스크립트는 모두 공개했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig1_hero.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig1_hero.png" alt="VKORE-325M 한눈에 보기" width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 "추론 전용 NPU는 학습을 못 한다"고들 할까?
&lt;/h2&gt;

&lt;p&gt;추론용 칩의 컴파일러와 런타임은 다른 곳에서 학습한 모델의 순전파를 실행하도록 만들어져 있습니다. 사전학습에는 그보다 훨씬 많은 것이 필요합니다. 모든 층의 역전파, 옵티마이저 상태, 그리고 수만 스텝 동안 안정적으로 이어지는 가중치 갱신입니다. 추론용 소프트웨어에는 이것들이 없습니다.&lt;/p&gt;

&lt;p&gt;이 질문은 비용 문제와 바로 이어집니다. 추론용 NPU는 학습용 GPU보다 싸고 전력도 적게 쓰며, 이미 많은 기관이 보유하고 있습니다. 같은 장비로 학습까지 할 수 있다면 칩 한 종류로 두 가지 일을 할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  무엇을 학습했나?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;모델&lt;/td&gt;
&lt;td&gt;VKORE-325M-NPU-Base, 디코더 전용 트랜스포머&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;파라미터&lt;/td&gt;
&lt;td&gt;3억 2,560만 (20층, 폭 1024, FFN 3584, GQA 쿼리 8·KV 2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;어휘&lt;/td&gt;
&lt;td&gt;256개, 바이트 단위&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터&lt;/td&gt;
&lt;td&gt;FineWeb-Edu 50억 바이트 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;학습&lt;/td&gt;
&lt;td&gt;7만 6,292스텝, 약 4일, 무작위 초기값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사전학습 가중치 사용&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;하드웨어&lt;/td&gt;
&lt;td&gt;리벨리온 ATOM-Max NPU (2025년 출시)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;공개한 모델은 표준 &lt;code&gt;LlamaForCausalLM&lt;/code&gt; 형식이라 &lt;code&gt;transformers&lt;/code&gt;로 바로 불러올 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  "GPU와 같은 품질"은 어떻게 증명했나?
&lt;/h2&gt;

&lt;p&gt;하드웨어만 다르고 나머지가 모두 같은 비교 대상이 있어야 합니다. 그래서 같은 모델을 같은 초기값, 같은 데이터, 같은 배치, 같은 학습률 일정으로 두 번 학습했습니다. 한 번은 NPU, 한 번은 B200 GPU 한 장입니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig6_twin_design.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig6_twin_design.png" alt="하나의 모델, 두 대의 장비, 나머지는 모두 고정" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8yjy8vynqyh2f6oggya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg8yjy8vynqyh2f6oggya.png" alt="두 실험의 학습률 일정은 같다" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  학습 곡선은 일치했나?
&lt;/h2&gt;

&lt;p&gt;학습 내내 겹칩니다. 둘 다 약 5.8에서 약 0.80까지 내려갑니다. 작은 출렁임이 다른 것은 두 실험이 무작위 구간을 다른 순서로 뽑았기 때문입니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig2_training_loss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig2_training_loss.png" alt="NPU와 B200의 학습 손실" width="799" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  처음 보는 텍스트에서는 어땠나?
&lt;/h2&gt;

&lt;p&gt;가장 중요한 시험입니다. 학습 말뭉치는 FineWeb-Edu &lt;code&gt;sample/10BT&lt;/code&gt;의 앞 두 샤드로만 만들었습니다. 평가는 학습에 전혀 쓰지 않은 샤드 &lt;code&gt;013&lt;/code&gt;에서 무작위로 뽑은 1,024개 구간으로 했습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델&lt;/th&gt;
&lt;th&gt;미사용 텍스트 손실&lt;/th&gt;
&lt;th&gt;바이트당 비트&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;리벨리온 ATOM-Max NPU&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.7993&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;1.1531&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B200 GPU 대조&lt;/td&gt;
&lt;td&gt;0.7994&lt;/td&gt;
&lt;td&gt;1.1533&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig3_evaluation.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig3_evaluation.png" alt="미사용 데이터 평가와 95% 신뢰구간" width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;두 모델은 같은 구간으로 평가했기 때문에 구간마다 짝지어 비교할 수 있습니다. 평균 차이는 &lt;strong&gt;-0.0001&lt;/strong&gt;(NPU 빼기 GPU), 표준오차는 &lt;strong&gt;0.0007&lt;/strong&gt;이고, 구간의 50.1%에서 NPU가 더 낮았습니다. 이 해상도에서는 두 모델을 구별할 수 없습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy50kh9fr17pvf4zzc3vx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy50kh9fr17pvf4zzc3vx.png" alt="미사용 텍스트에서 구간별 차이" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  VKORE-46M과 무엇이 달라졌나?
&lt;/h2&gt;

&lt;p&gt;VKORE-46M-NPU는 역전파가 칩 위에서 돌아갈 수 있다는 것을 보였습니다. VKORE-325M은 실제 사전학습 규모로 넘어간 단계입니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig7_journey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2FFINAL-Bench%2FVKORE-325M-NPU-Base%2Fresolve%2Fmain%2Farticle%2Ffig7_journey.png" alt="VKORE-46M-NPU에서 VKORE-325M-NPU-Base로" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;두 모델 사이의 가장 큰 과제는 역전파 자체가 아니라 긴 학습을 끝까지 안정적으로 끌고 가는 것이었습니다. 이 안정화 기술은 자체 개발했고 특허 출원 중이라 이 글에서는 설명하지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  NPU만 사면 학습할 수 있나?
&lt;/h2&gt;

&lt;p&gt;아닙니다. ATOM-Max와 기본 소프트웨어는 추론용으로 설계되어 있습니다. 학습은 비드래프트가 자체 개발한 학습 체계와 안정화 기술이 있어야 가능합니다. 칩을 구입하는 것만으로는 학습이 되지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  직접 재현하려면?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;

&lt;span class="n"&gt;npu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;gpu&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subfolder&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;b200_reference&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;저장소의 &lt;code&gt;evaluate_unseen.py&lt;/code&gt;가 샤드 &lt;code&gt;013&lt;/code&gt;을 내려받고 같은 1,024개 구간으로 두 모델의 손실과 짝 차이를 출력합니다. &lt;code&gt;transformers&lt;/code&gt;, &lt;code&gt;numpy&lt;/code&gt;, &lt;code&gt;pyarrow&lt;/code&gt;만 있으면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;어떤 NPU를 썼나요?&lt;/strong&gt;&lt;br&gt;
리벨리온이 2025년 출시한 상용 추론 전용 NPU ATOM-Max입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NPU 모델이 GPU 모델만큼 좋은가요?&lt;/strong&gt;&lt;br&gt;
학습에 쓰지 않은 FineWeb-Edu 텍스트에서 손실 0.7993 대 0.7994로 같습니다. 짝 차이는 -0.0001, 표준오차 0.0007입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;대화형 모델인가요?&lt;/strong&gt;&lt;br&gt;
아닙니다. 50억 토큰으로 학습한 3억 2,500만 파라미터 기초 모델이며, 학습 하드웨어 성과를 보이기 위해 공개했습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;학습 방법도 공개하나요?&lt;/strong&gt;&lt;br&gt;
가중치, 데이터 구성, 평가는 공개했습니다. 학습 체계와 안정화 기술은 자체 기술이며 특허 출원 중입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;이전 모델과 어떤 관계인가요?&lt;/strong&gt;&lt;br&gt;
VKORE NPU 학습 시리즈의 두 번째 모델입니다. 첫 모델 VKORE-46M-NPU보다 7배 크고, 데이터는 222배 많습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  더 읽을거리
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;전체 기술 보고서(영문): &lt;a href="https://huggingface.co/blog/FINAL-Bench/pretraining-a-325m-language-model-from-zero-on-an" rel="noopener noreferrer"&gt;Pretraining a 325M Language Model from Zero on an Inference-Only NPU&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;모델: &lt;a href="https://huggingface.co/FINAL-Bench/VKORE-325M-NPU-Base" rel="noopener noreferrer"&gt;FINAL-Bench/VKORE-325M-NPU-Base&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/curon-jeonyong-npumaneuro-mitbadagbuteo-sajeonhagseub-vkore-46m-npu-gonggae-201j"&gt;추론 전용 NPU만으로 밑바닥부터 사전학습: VKORE-46M-NPU 공개&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/ai-dibtekeuneun-airo-eoddeohge-ilhaneunga-bideuraepeuteu-ai-native-5gyeceung-gujo-haeseol-5cj3"&gt;AI 딥테크는 AI로 어떻게 일하는가: 비드래프트 AI NATIVE 5계층 구조 해설&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>korean</category>
    </item>
    <item>
      <title>AI 딥테크는 AI로 어떻게 일하는가: 비드래프트 AI NATIVE 5계층 구조 해설</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Sun, 25 Oct 2026 00:33:51 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/ai-dibtekeuneun-airo-eoddeohge-ilhaneunga-bideuraepeuteu-ai-native-5gyeceung-gujo-haeseol-5cj3</link>
      <guid>https://dev.to/vidraft_lab/ai-dibtekeuneun-airo-eoddeohge-ilhaneunga-bideuraepeuteu-ai-native-5gyeceung-gujo-haeseol-5cj3</guid>
      <description>&lt;p&gt;&lt;strong&gt;AI NATIVE 조직은 AI를 도구로 쓰는 조직이 아니라, 조직 자체를 AI로 구성한 조직입니다.&lt;/strong&gt; 비드래프트(VIDRAFT)는 회사 운영을 5개 계층으로 나누고, 깊은 계층에는 권한을 가진 사람 4명만 접근하며, 실제 업무는 하나의 기억을 공유하는 AI 에이전트 조직이 수행합니다. 이 글은 그 구조를 그림 한 장과 함께 설명합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2Fdatasets%2FVIDraft%2Fpress-assets%2Fresolve%2Fmain%2Fainative%2Fvidraft_ai_native_2026-10-25.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhuggingface.co%2Fdatasets%2FVIDraft%2Fpress-assets%2Fresolve%2Fmain%2Fainative%2Fvidraft_ai_native_2026-10-25.jpg" alt="비드래프트 AI NATIVE 5계층 시스템 구조도: LV.1 표현층부터 LV.5 인프라층까지, 핵심 4명의 권한 레벨과 AI 에이전트 조직" width="800" height="960"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI NATIVE란 무엇인가
&lt;/h2&gt;

&lt;p&gt;많은 기업이 "AI 도입"을 말합니다. 대부분은 기존 조직에 챗봇이나 코딩 도구를 붙이는 방식입니다. 일하는 주체는 여전히 사람이고, AI는 보조 도구입니다.&lt;/p&gt;

&lt;p&gt;AI NATIVE는 순서가 반대입니다. &lt;strong&gt;일하는 주체가 AI이고, 사람은 방향과 권한을 쥡니다.&lt;/strong&gt; 비드래프트에서는 관리이사, 감사, 본부장, 팀장, 영업이사 같은 직책을 모두 AI 에이전트가 맡습니다. 사람은 권한 레벨에 따라 필요한 계층에 접근해 지시하고 승인합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  5계층 구조 한눈에 보기
&lt;/h2&gt;

&lt;p&gt;레벨 번호가 곧 계층 번호입니다. 위에서부터 LV.1이고, 아래로 내려갈수록 깊은 계층입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;레벨&lt;/th&gt;
&lt;th&gt;계층&lt;/th&gt;
&lt;th&gt;하는 일&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;LV.1&lt;/td&gt;
&lt;td&gt;표현층&lt;/td&gt;
&lt;td&gt;모델, 데이터셋, AI 서비스가 허깅페이스, 모델스코프, 깃허브, 고객사, 웹/앱 서비스, SNS로 공개됩니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LV.2&lt;/td&gt;
&lt;td&gt;조직층&lt;/td&gt;
&lt;td&gt;관리이사, 감사, 본부장(1~10본부), 팀장(1~108팀), 영업이사를 모두 AI 에이전트가 맡습니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LV.3&lt;/td&gt;
&lt;td&gt;두뇌층&lt;/td&gt;
&lt;td&gt;강화 모델, 디시전 AI(ZTC), 모델 기반 재귀적 자가개선(RSI), 하네스로 이루어진 자체 Pre-AGI 모델이 판단과 추론을 맡습니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LV.4&lt;/td&gt;
&lt;td&gt;기억층&lt;/td&gt;
&lt;td&gt;2022년부터 쌓아 온 통합 장기기억 체계입니다. 모든 에이전트가 하나의 기억을 읽고 기록합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LV.5&lt;/td&gt;
&lt;td&gt;인프라층&lt;/td&gt;
&lt;td&gt;자체 B200 GPU 클러스터와 전용 스토리지, 가상서버 약 1,000대와 H200 GPU 약 100장이 전체를 받칩니다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  사람의 자리: 핵심 4명과 권한 레벨
&lt;/h2&gt;

&lt;p&gt;무인 조직이라고 해서 사람이 사라지는 것은 아닙니다. 사람의 역할이 &lt;strong&gt;권한&lt;/strong&gt;으로 바뀝니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CEO (LV.5)&lt;/strong&gt;: 전 계층에 접근하고 지휘합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CAIO (LV.4)&lt;/strong&gt;: LV.1부터 LV.4 기억층까지 접근합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CTO (LV.3)&lt;/strong&gt;: LV.1부터 LV.3 두뇌층까지 접근합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;연구소장 (LV.2)&lt;/strong&gt;: LV.1 표현층과 LV.2 조직층에 접근합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;운영 인력 (LV.1)&lt;/strong&gt;: 핵심 4명 외의 인력은 바깥과 맞닿는 표현층을 운영합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;스페셜리스트&lt;/strong&gt;: 외부 전문가는 권한 범위 안에서 읽고 조언만 합니다. 지휘는 하지 않습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;깊은 계층(LV.2~5)에는 핵심 4명만 들어갑니다. 레벨이 높을수록 더 깊은 계층까지 접근하는 단순한 규칙이라, 누가 무엇을 바꿀 수 있는지가 분명합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 통합 장기기억이 핵심인가
&lt;/h2&gt;

&lt;p&gt;AI 에이전트의 가장 큰 약점은 망각입니다. 대화가 끝나면 맥락이 사라지고, 다음 작업은 처음부터 다시 시작합니다. 에이전트를 여러 개 두면 이 문제는 더 커집니다.&lt;/p&gt;

&lt;p&gt;비드래프트의 모든 에이전트는 하나의 기억을 공유합니다. 그래서 다음과 같은 일이 일어납니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;집단 지식이 복리로 늘어납니다.&lt;/strong&gt; 한 에이전트가 배운 교훈이 즉시 조직 전체의 출발점이 됩니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;같은 실수를 두 번 하지 않습니다.&lt;/strong&gt; 사고는 원인과 재발 방지 규칙으로 기록되고, 다른 팀이 같은 상황을 만나면 기록이 먼저 경고합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;담당이 바뀌어도 맥락이 끊기지 않습니다.&lt;/strong&gt; 몇 주 전의 결정과 그 이유까지 이어받습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;확장할수록 강해집니다.&lt;/strong&gt; 팀이 늘면 쌓이는 경험도 늘어납니다. 보통 조직은 커질수록 지식이 흩어지지만, 이 구조에서는 규모가 곧 축적 속도입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;기억은 사실로 고쳐 씁니다.&lt;/strong&gt; 기억과 지금의 사실이 다르면 지금의 사실을 따르고 기억을 갱신합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2022년부터 쌓인 조직 기억은 비용을 들여도 짧은 기간에 복제할 수 없습니다. 같은 모델은 누구나 쓸 수 있지만, 같은 기억은 가질 수 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  일이 흐르는 7단계
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;권한자(LV.2~5)가 지시합니다.&lt;/li&gt;
&lt;li&gt;담당 에이전트가 기억층을 먼저 읽습니다.&lt;/li&gt;
&lt;li&gt;판단이 필요하면 자체 Pre-AGI 모델을 씁니다.&lt;/li&gt;
&lt;li&gt;AI 에이전트 조직이 실행합니다.&lt;/li&gt;
&lt;li&gt;결과와 교훈을 기억층에 기록합니다.&lt;/li&gt;
&lt;li&gt;AI 감사가 사후 검증합니다.&lt;/li&gt;
&lt;li&gt;결과물이 표현층으로 공개됩니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  "AI 도입" 조직과 무엇이 다른가
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;AI 도입 조직&lt;/th&gt;
&lt;th&gt;AI NATIVE 조직&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;일하는 주체&lt;/td&gt;
&lt;td&gt;사람&lt;/td&gt;
&lt;td&gt;AI 에이전트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사람의 역할&lt;/td&gt;
&lt;td&gt;실행&lt;/td&gt;
&lt;td&gt;방향 설정, 권한, 승인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;지식&lt;/td&gt;
&lt;td&gt;개인에게 흩어짐&lt;/td&gt;
&lt;td&gt;하나의 기억에 쌓임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;실수&lt;/td&gt;
&lt;td&gt;사람이 바뀌면 반복&lt;/td&gt;
&lt;td&gt;재발 방지 규칙으로 축적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;확장&lt;/td&gt;
&lt;td&gt;소통 비용 증가&lt;/td&gt;
&lt;td&gt;지식 축적 속도 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q. AI NATIVE 조직이란 무엇인가요?&lt;/strong&gt;&lt;br&gt;
A. AI를 도구로 붙인 조직이 아니라, 업무를 수행하는 주체 자체가 AI 에이전트인 조직입니다. 사람은 방향과 권한을 쥡니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 사람은 정말 4명만 접근하나요?&lt;/strong&gt;&lt;br&gt;
A. 깊은 계층(LV.2~5)은 CEO, CAIO, CTO, 연구소장 4명만 권한별로 접근합니다. 그 밖의 인력은 LV.1 표현층을 운영하고, 스페셜리스트는 읽기와 조언만 합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. AI 에이전트가 실수하면 어떻게 되나요?&lt;/strong&gt;&lt;br&gt;
A. AI 감사가 사후 검증하고, 실수는 원인과 재발 방지 규칙으로 기억층에 기록됩니다. 다음 에이전트는 그 기록을 먼저 읽고 일을 시작합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 통합 장기기억은 어떻게 구현했나요?&lt;/strong&gt;&lt;br&gt;
A. 구현 방식은 공개하지 않습니다. 공개하는 것은 원칙입니다. 모든 에이전트가 작업 시작 전에 기억을 읽고, 끝나면 기록하며, 기억보다 지금의 사실을 우선합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 어떤 모델로 움직이나요?&lt;/strong&gt;&lt;br&gt;
A. 판단과 추론은 자체 Pre-AGI 모델(강화 모델, 디시전 AI ZTC, 모델 기반 RSI, 하네스)이 맡고, 에이전트 실행에는 Claude Opus 5.5와 GPT 6.1 sol 같은 최신 모델을 함께 씁니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  정리
&lt;/h2&gt;

&lt;p&gt;AI 딥테크의 경쟁력은 모델 하나에서 끝나지 않는다고 봅니다. 배운 것을 잃지 않고 쌓아 가는 조직이 결국 더 빨리 나아갑니다. 비드래프트의 AI NATIVE는 그 생각을 조직 구조로 옮긴 결과입니다.&lt;/p&gt;

&lt;p&gt;더 자세한 내용은 비드래프트 홈페이지에서 볼 수 있습니다: &lt;a href="https://vidraft.net" rel="noopener noreferrer"&gt;vidraft.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>agents</category>
      <category>startup</category>
    </item>
    <item>
      <title>OWASP Benchmark 52.8점이 77.8점이 된 이유: AI 검증층이 거짓 양성을 줄이면 점수가 움직이는 산술</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Fri, 23 Oct 2026 23:59:50 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/owasp-benchmark-528jeomi-778jeomi-doen-iyu-ai-geomjeungceungi-geojis-yangseongeul-julimyeon-jeomsuga-umjigineun-sansul-2ice</link>
      <guid>https://dev.to/vidraft_lab/owasp-benchmark-528jeomi-778jeomi-doen-iyu-ai-geomjeungceungi-geojis-yangseongeul-julimyeon-jeomsuga-umjigineun-sansul-2ice</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;비드래프트의 보안 점검 엔진 &lt;strong&gt;치토스(Chitos)&lt;/strong&gt; 를 OWASP Benchmark에 올린 &lt;strong&gt;자체 측정&lt;/strong&gt; 결과, 기반 코드 스캐너 단독은 &lt;strong&gt;52.8&lt;/strong&gt;, 치토스 전체는 온라인 판단 엔진 &lt;strong&gt;77.2&lt;/strong&gt;, 온프레미스 판단 엔진 &lt;strong&gt;77.8&lt;/strong&gt;(Youden 지수, 0~100)이었습니다.&lt;/li&gt;
&lt;li&gt;올라간 25.0점의 정체는 단순합니다. Youden 지수는 &lt;code&gt;참 양성률 - 거짓 양성률&lt;/code&gt;이므로, 진짜 취약점을 놓치지 않은 채 거짓 양성만 줄이면 그 감소분이 그대로 점수가 됩니다. 거짓 양성을 60% 이상 걸러냈다는 말은 기반 스캐너의 거짓 양성률이 25.0%에서 41.7% 사이였다는 뜻이 됩니다(아래 계산).&lt;/li&gt;
&lt;li&gt;외부 API 판단 엔진과 내부망 전용 판단 엔진의 차이는 &lt;strong&gt;0.6점&lt;/strong&gt;입니다. 사실상 같은 수준이므로 데이터를 밖으로 내보내지 않는 구성에서도 정확도를 잃지 않았습니다.&lt;/li&gt;
&lt;li&gt;한계도 분명히 적습니다. 이 수치는 저희가 저희 제품을 직접 잰 값이고, 공식 채점 도구를 통한 교차 확인은 진행 중입니다. 벤치마크 점수는 버전, 평균 방식, 범주 선택, 일치 규칙에 따라 크게 달라지므로 숫자 하나만 보고 판단하지 마세요.&lt;/li&gt;
&lt;li&gt;금융보안원이 2026년 10월 발표한 AI 에이전트 보안 평가기준 17개 항목에 대해서는 치토스의 &lt;strong&gt;대응 범위를 자체 정리&lt;/strong&gt;했습니다(자동 10, 부분자동 6, 통제 1). 외부 평가나 인증 결과가 아닙니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  왜 하필 거짓 양성을 줄이는 것이 핵심인가요?
&lt;/h2&gt;

&lt;p&gt;보안 점검 도구가 현장에서 버려지는 가장 흔한 이유는 못 찾아서가 아니라 &lt;strong&gt;너무 많이 찾아서&lt;/strong&gt;입니다. 경고 수백 건 중 실제 취약점이 몇 건인지 사람이 하나씩 열어 봐야 한다면, 개발팀은 어느 순간 경고 자체를 읽지 않게 됩니다.&lt;/p&gt;

&lt;p&gt;한국에서는 올가을 이 문제가 현실적인 무게를 얻었습니다. 보도에 따르면 2026년 9월 말부터 10월 초 사이 금융사 일곱 곳이 오픈소스로 공개된 AI 침투 도구에 뚫렸고, 6만~7만 명 안팎의 개인정보가 유출된 것으로 알려졌습니다(&lt;a href="https://www.seoul.co.kr/news/economy/2026/10/05/20261005001006" rel="noopener noreferrer"&gt;서울신문&lt;/a&gt;, 유출 규모는 보도마다 차이가 있습니다). 공격이 AI로 자동화되었다면 방어 쪽 점검도 같은 속도로 돌아야 하는데, 경고 홍수는 그 속도를 가장 먼저 무너뜨립니다.&lt;/p&gt;

&lt;p&gt;그래서 치토스는 탐지 엔진 위에 &lt;strong&gt;AI 2단 검증층&lt;/strong&gt;을 둡니다. 1차 탐지 결과를 AI가 다시 읽고, 재현되지 않는 항목을 걸러낸 뒤에 사람에게 넘깁니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  치토스는 어떤 구조인가요?
&lt;/h2&gt;

&lt;p&gt;세 겹으로 동작합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;자율 점검 에이전트&lt;/strong&gt;: 정찰 결과를 보고 스스로 점검 가설을 세우고, 한 경로가 막히면 다른 경로를 찾습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;비파괴 탐지 엔진&lt;/strong&gt;: 주입, 인증, 접근제어, 노출 같은 웹 취약점과 공급망, 시크릿, 설정을 점검합니다. 검증된 오픈 도구를 통합하고 그 위에 자체 프로브를 얹었습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI 2단 검증&lt;/strong&gt;: 1차 결과를 다시 읽어 거짓 양성을 제거합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;입력은 소스 코드와 &lt;strong&gt;승인된&lt;/strong&gt; 점검 대상 URL이고, 출력은 재현 가능한 증거 리포트입니다. 점검 대상을 손상시키지 않는 비파괴 방식이므로 운영 중인 시스템에도 쓸 수 있습니다. (학습 방법이나 내부 임계값 같은 세부 구현은 공개하지 않습니다.)&lt;/p&gt;

&lt;h2&gt;
  
  
  OWASP Benchmark 점수는 어떻게 계산되나요?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://owasp.org/www-project-benchmark/" rel="noopener noreferrer"&gt;OWASP Benchmark&lt;/a&gt;는 보안 점검 도구의 정확도를 재기 위한 오픈소스 평가 앱입니다. 최신 v1.2는 2,740개의 테스트 케이스(자바 서블릿)로 이루어져 있고, 케이스마다 진짜 취약점이거나 가짜 취약점이며 11개 범주로 나뉩니다. 점수는 Youden 지수로 계산합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;점수 = (참 양성률 - 거짓 양성률) x 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;찾을 것은 다 찾고(참 양성률 100%) 아무것도 오탐하지 않으면(거짓 양성률 0%) 100점이고, 아무 때나 경고를 띄우는 도구는 참 양성률과 거짓 양성률이 함께 올라가 0점 근처에 머뭅니다. 점수 하나로 탐지 폭과 소음을 동시에 보도록 만든 지표입니다.&lt;/p&gt;

&lt;p&gt;저희 자체 측정 결과는 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구성&lt;/th&gt;
&lt;th&gt;Youden 지수&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;기반 코드 스캐너 단독&lt;/td&gt;
&lt;td&gt;52.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;치토스 전체, 온라인 판단 엔진&lt;/td&gt;
&lt;td&gt;77.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;치토스 전체, 온프레미스 판단 엔진&lt;/td&gt;
&lt;td&gt;77.8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  25.0점 상승을 산술로 풀면 무엇이 보이나요?
&lt;/h2&gt;

&lt;p&gt;Youden 지수가 &lt;code&gt;참 양성률 - 거짓 양성률&lt;/code&gt;이라는 사실만으로 몇 가지를 역산할 수 있습니다. 조건은 하나, &lt;strong&gt;진짜 취약점은 하나도 놓치지 않았다&lt;/strong&gt;는 것입니다(참 양성률 불변). 이 가정이 맞다면 점수 상승분은 곧 거짓 양성률 하락분(퍼센트포인트)입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;full_onprem&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;full_online&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;52.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;77.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;77.2&lt;/span&gt;
&lt;span class="n"&gt;gain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_onprem&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;          &lt;span class="c1"&gt;# 25.0
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_online&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_onprem&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;full_online&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;# 25.0 24.4 0.6
&lt;/span&gt;
&lt;span class="c1"&gt;# TPR 불변이면 점수 상승분 = FPR 하락분(%p).
# FPR 감소 비율 r = gain / FPR_base. r &amp;gt;= 0.6 이면 FPR_base &amp;lt;= gain / 0.6
&lt;/span&gt;&lt;span class="n"&gt;lo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;gain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;lo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hi&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# 25.0 41.7
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;25.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;30.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;35.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;40.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;41.7&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gain&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;# 25.0 100.0 / 30.0 83.3 / 35.0 71.4 / 40.0 62.5 / 41.7 60.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-1918c56d-78bf-454e-a997-610d33f015fe" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-1918c56d-78bf-454e-a997-610d33f015fe" alt="TPR을 유지한다는 가정에서 +25.0점을 내기 위해 기반 거짓 양성률별로 필요한 감소율" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;이 표에서 읽을 수 있는 것은 세 가지입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;거짓 양성을 "60% 이상" 걸러냈다는 설명과 +25.0점은 &lt;strong&gt;서로 모순이 없습니다.&lt;/strong&gt; 기반 스캐너의 거짓 양성률이 25.0~41.7% 범위에 있어야 둘이 동시에 성립합니다. 이 범위 밖이었다면 둘 중 하나는 틀린 수치입니다.&lt;/li&gt;
&lt;li&gt;기반 거짓 양성률이 25.0%였다면 감소율은 100%, 즉 오탐을 전부 제거했어야 합니다. 범위의 위쪽으로 갈수록 필요한 감소율은 60%에 가까워집니다.&lt;/li&gt;
&lt;li&gt;기반 거짓 양성률의 정확한 값은 이 글에서 공개하지 않습니다. 위 표는 &lt;strong&gt;산술적 제약&lt;/strong&gt;이지 측정값이 아닙니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;한 가지 더 있습니다. 두 판단 엔진의 점수 차이 0.6점은 작지만, 오차 범위를 따로 재지 않았으므로 "온프레미스가 더 낫다"고 주장하지 않습니다. 말할 수 있는 것은 &lt;strong&gt;"비슷하다"&lt;/strong&gt; 까지입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  77.8점이라는 숫자, 어디까지 믿어야 하나요?
&lt;/h2&gt;

&lt;p&gt;벤치마크 점수는 읽는 방법에 따라 놀라울 만큼 달라집니다. 한 개발자가 쓴 &lt;a href="https://dev.to/hamelin123/the-same-detector-scores-455-or-100-on-the-owasp-benchmark-both-are-true-512k"&gt;분석 글&lt;/a&gt;은 같은 탐지기가 OWASP Benchmark에서 45.5점도, 100점도 나올 수 있다고 보였습니다. 이유는 네 가지입니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;벤치마크 버전&lt;/strong&gt;: v1.1은 21,041개, v1.2는 2,740개 케이스입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;평균 방식&lt;/strong&gt;: 범주마다 같은 비중을 주는 매크로 평균과 케이스 수에 비례하는 가중 평균은 값이 다릅니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;범주 선택&lt;/strong&gt;: 11개 범주 전체로 보느냐, 인젝션 계열만 보느냐에 따라 점수가 갈립니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;일치 규칙&lt;/strong&gt;: 줄 단위, 메서드 단위, 파일 단위 중 무엇으로 맞는지를 판정하느냐가 다릅니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;평균 방식 하나만으로도 얼마나 달라지는지 가상의 숫자로 직접 계산해 보면 이렇습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# illustrative: 가상 3개 범주 (케이스 수, 참 양성률, 거짓 양성률)
&lt;/span&gt;&lt;span class="n"&gt;cats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;0.50&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
&lt;span class="n"&gt;tot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="n"&gt;case_w&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;tot&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="n"&gt;macro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cats&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;case_w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;macro&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="c1"&gt;# 70.4 28.3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-7e478ef6-51f0-4267-a9fc-f12b2e3c3d95" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-7e478ef6-51f0-4267-a9fc-f12b2e3c3d95" alt="같은 결과를 범주 가중 평균과 매크로 평균으로 계산한 가상 예시" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;같은 결과가 70.4점도 28.3점도 됩니다(가상 데이터이며 실제 측정이 아닙니다). 그래서 어떤 벤치마크 점수든, 저희 점수를 포함해, 다음 네 가지를 함께 밝혀야 비교가 가능합니다: 버전, 평균 방식, 범주 범위, 일치 규칙. 저희는 이 글에서 점수의 맥락을 최대한 적었지만, 위 네 항목을 공식 채점 도구 기준으로 다시 맞추는 교차 확인은 아직 끝나지 않았습니다. 그 결과가 나오기 전까지 77.8은 &lt;strong&gt;저희가 저희 방식대로 잰 값&lt;/strong&gt;으로 읽어 주세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  온프레미스 구성이 정확도를 잃지 않았다는 말은 무슨 뜻인가요?
&lt;/h2&gt;

&lt;p&gt;판단 엔진은 두 가지로 돌아갑니다. 외부 API 모델과, 고객사 내부망에 올리는 자체 대형 모델(Darwin-180B-RSI)입니다. 같은 측정에서 77.2와 77.8이 나왔습니다. 금융과 공공처럼 소스 코드와 점검 결과가 외부로 나가면 안 되는 환경에서, 판단 엔진을 내부망에 두고도 점수가 떨어지지 않는다는 뜻입니다. 모든 점검은 내부망 비파괴, 읽기 전용으로 수행되며 데이터 반출이 없습니다.&lt;/p&gt;

&lt;p&gt;이해관계를 밝힙니다. 치토스와 Darwin 모델은 모두 비드래프트의 제품이며, 위 비교는 저희 구성 두 개끼리의 비교입니다. 제3자가 확인한 결과가 아닙니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  금융보안원 AI 에이전트 평가기준에는 어떻게 대응하나요?
&lt;/h2&gt;

&lt;p&gt;금융보안원은 2026년 10월 7일 「금융분야 AI 에이전트 보안 평가기준」을 발표했습니다. 6개 분야 17개 점검항목이며, 올해 말까지 금융권 시범 검증을 거쳐 2027년부터 정식 점검기준으로 확대 적용할 계획입니다(&lt;a href="https://www.etnews.com/20261007000233" rel="noopener noreferrer"&gt;전자신문&lt;/a&gt;). 저희 정리로는 17개 중 8개가 기존 모델 계층 보안에 없던, 에이전트 실행 계층에서 새로 생긴 위협입니다. 목표 무결성, 연쇄적 실패, 취약한 도구 사용, 도구 권한 제어, 샌드박스, 에이전트 간 통신보안, 인적 승인, 인적 개입 과부하가 그것입니다.&lt;/p&gt;

&lt;p&gt;치토스는 이 17개 항목 모두에 대응 모듈을 두고 있고, 수준은 다음과 같이 정리했습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;자동&lt;/th&gt;
&lt;th&gt;부분자동&lt;/th&gt;
&lt;th&gt;통제&lt;/th&gt;
&lt;th&gt;합계&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;에이전트 신규 위협 항목&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기존 계층 항목&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;전체&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-e6f595ff-8094-48a1-bb82-0944f409302c" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-e6f595ff-8094-48a1-bb82-0944f409302c" alt="금융보안원 17항목에 대한 치토스 대응 수준, 신규 위협 8항목과 기존 9항목 구분" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;자동&lt;/strong&gt;: 자동 점검으로 대응합니다. 예: 도구 및 의존성 취약점 대조, 고위험 행위 차단, 킬스위치, 변경 불가 감사 로그.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;부분자동&lt;/strong&gt;: 부분 자동 점검에 설계와 운영 통제를 함께 씁니다. 예: 목표 무결성, 연쇄 실패 격리, 에이전트 간 통신.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;통제&lt;/strong&gt;: 설계와 운영으로 대응합니다. 예: 샌드박스(비파괴, 읽기 전용 격리 실행).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 표는 &lt;strong&gt;치토스가 어디까지 대응하는지를 저희가 정리한 커버리지&lt;/strong&gt;입니다. 금융보안원이나 제3자가 평가한 결과가 아니며, "인증"이나 "통과"를 뜻하지 않습니다. 정식 적용 전 시범 검증 단계라는 점도 함께 기억해 주세요. 치토스 자체가 자율 점검 에이전트라서 실행 계층 위협을 사후에 덧붙이지 않고 설계 단계부터 다룹니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  직접 확인해 보려면 무엇부터 보면 되나요?
&lt;/h2&gt;

&lt;p&gt;치토스를 쓰지 않더라도 같은 기준으로 아무 보안 점검 도구에나 적용할 수 있는 체크리스트입니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;점수의 &lt;strong&gt;벤치마크 버전&lt;/strong&gt;이 무엇인지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;평균 방식&lt;/strong&gt;(매크로인지 가중인지)과 &lt;strong&gt;범주 범위&lt;/strong&gt;를 확인합니다.&lt;/li&gt;
&lt;li&gt;참 양성률과 거짓 양성률을 &lt;strong&gt;따로&lt;/strong&gt; 요구합니다. Youden 지수만 보면 둘이 섞여 보입니다.&lt;/li&gt;
&lt;li&gt;합성 벤치마크와 &lt;strong&gt;실제 코드베이스&lt;/strong&gt; 결과가 같은 방향인지 확인합니다. OWASP Benchmark는 합성 케이스이므로 실제 프로젝트의 소음 수준을 대신하지 못합니다.&lt;/li&gt;
&lt;li&gt;측정한 사람이 누구인지 확인합니다. 제품 제작사의 자체 측정인지, 제3자 측정인지에 따라 같은 숫자의 무게가 달라집니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Youden 지수가 77.8이면 상용 도구보다 좋은 건가요?&lt;/strong&gt;&lt;br&gt;
이 글은 그 비교를 하지 않습니다. 다른 도구의 점수는 버전, 평균 방식, 범주 범위가 다를 수 있어서 같은 조건으로 다시 재지 않으면 비교가 성립하지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;거짓 양성을 줄이면 진짜 취약점도 놓치지 않나요?&lt;/strong&gt;&lt;br&gt;
이번 측정에서는 AI 검증층이 진짜 취약점을 놓치지 않았다는 것이 자체 측정 결과입니다. 다만 벤치마크는 합성 케이스이므로 실제 환경에서의 재현율은 별도로 확인해야 하고, 그 확인은 진행 중입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;온프레미스 구성은 외부 API 구성과 정말 같은 정확도인가요?&lt;/strong&gt;&lt;br&gt;
이번 측정에서는 77.8과 77.2로 0.6점 차이였습니다. 오차 범위를 따로 재지 않았기 때문에 "비슷하다"라고만 표현합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;금융보안원 17개 항목에 "대응한다"는 것은 인증을 받았다는 뜻인가요?&lt;/strong&gt;&lt;br&gt;
아닙니다. 치토스가 각 항목을 어떤 기능과 통제로 다루는지 정리한 커버리지입니다. 기준 자체가 2026년 시범 검증을 거쳐 2027년부터 정식 적용될 예정입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;치토스는 점검 대상에 피해를 주지 않나요?&lt;/strong&gt;&lt;br&gt;
비파괴, 읽기 전용 방식으로 점검하도록 설계되어 있습니다. 승인된 대상에만 쓰는 것을 전제로 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  정리
&lt;/h2&gt;

&lt;p&gt;AI 2단 검증으로 거짓 양성을 줄이면 Youden 지수가 올라가는 것은 지표의 정의상 자연스러운 결과이고, 저희 자체 측정에서는 52.8에서 77.8로 올랐습니다. 중요한 것은 그 숫자가 아니라 숫자를 읽는 방법입니다. 버전, 평균 방식, 범주, 일치 규칙을 밝히지 않은 점수는 비교할 수 없고, 제품 제작사가 직접 잰 점수는 교차 확인이 끝나기 전까지 그렇게 표시해야 합니다. 공식 채점 도구 기준의 교차 확인이 끝나면 결과를 그대로 공개하겠습니다.&lt;/p&gt;

&lt;p&gt;도입 문의: &lt;a href="https://vidraft.net" rel="noopener noreferrer"&gt;vidraft.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/gongin-rideobodeuro-jeungmyeonghaneun-beob-suciboda-jungyohan-geoseun-nuga-caejeomhaneunya-22e4"&gt;공인 리더보드로 증명하는 법: 수치보다 중요한 것은 누가 채점하느냐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/ai-sinyag-seolgye-caelrinji-2man-3886geonyi-jeomsupyoreul-ddeudeo-boni-manjeome-daheun-cuggwa-han-beondo-dahji-moshan-cug-f5i"&gt;AI 신약 설계 챌린지 2만 3,886건의 점수표를 뜯어 보니: 만점에 닿은 축과 한 번도 닿지 못한 축&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>security</category>
      <category>appsec</category>
    </item>
    <item>
      <title>AI 신약 설계 챌린지 2만 3,886건의 점수표를 뜯어 보니: 만점에 닿은 축과 한 번도 닿지 못한 축</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Thu, 22 Oct 2026 23:41:13 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/ai-sinyag-seolgye-caelrinji-2man-3886geonyi-jeomsupyoreul-ddeudeo-boni-manjeome-daheun-cuggwa-han-beondo-dahji-moshan-cug-f5i</link>
      <guid>https://dev.to/vidraft_lab/ai-sinyag-seolgye-caelrinji-2man-3886geonyi-jeomsupyoreul-ddeudeo-boni-manjeome-daheun-cuggwa-han-beondo-dahji-moshan-cug-f5i</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2026-10-23 08:33(KST)에 오픈 디스커버리 챌린지(ODC)의 공개 API에서 4개 시즌의 채점 결과를 전부 내려받았습니다. 기준물질을 뺀 채점 완료 제출은 &lt;strong&gt;2만 3,886건&lt;/strong&gt;이고, 이 중 순위표에 오른 행은 2만 3,273건, 강등된 행은 613건입니다. 제출 계정은 131곳입니다.&lt;/li&gt;
&lt;li&gt;순위표 상위 50위의 평균 득점률을 축별로 보면 &lt;strong&gt;결합과 선택성은 시즌 1, 2, 4에서 91~100%로 사실상 만점&lt;/strong&gt;입니다. 반면 &lt;strong&gt;ADMET 축은 25~44%&lt;/strong&gt; 에 머뭅니다. 순위에 오른 2만 3,273건 중 ADMET 15점 만점을 받은 제출은 &lt;strong&gt;0건&lt;/strong&gt;이고, 최고점은 11.92점입니다.&lt;/li&gt;
&lt;li&gt;ADMET 점수가 상위 1%인 제출들은 총점 순위로는 상위 9.5~18.3%에 흩어져 있습니다(네 시즌 모두). 이 제출들은 결합·선택성·활동 축에서 상위 50위보다 낮은 점수를 받았습니다. 한 축을 올리면 다른 축이 내려가는 구조가 데이터에 보입니다.&lt;/li&gt;
&lt;li&gt;강등 규칙을 빼고 총점만으로 줄을 세우면 시즌 1의 상위 50위 중 &lt;strong&gt;38개가 강등 대상&lt;/strong&gt;이고, 원점수 1위(85.90점)는 공식 1위(84.72점)보다 높습니다. 순위표는 점수만이 아니라 필터로도 만들어집니다.&lt;/li&gt;
&lt;li&gt;이해관계 고지: ODC는 저희(VIDRAFT, 허깅페이스 조직명 FINAL-Bench)가 운영하고 채점기도 저희 것입니다. 이 글의 점수는 계산 기반 예측이며 실험 측정이 아니고, 제3자 검증도 아닙니다. 모든 수치는 공개 API에서 읽은 값이고 아래 코드로 직접 다시 계산할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  무엇을 내려받았고, 어떻게 셌나요?
&lt;/h2&gt;

&lt;p&gt;ODC는 허깅페이스에서 운영하는 신약 후보 분자 리더보드입니다. 참가자는 원하는 AI로 분자를 설계해 SMILES 문자열로 제출하고, 채점기가 표적 단백질과의 결합, 인간 유사 단백질에 대한 선택성, 체내 안전성 예측(ADMET) 등을 합쳐 100점 만점으로 점수를 매깁니다. 챌린지 Space는 &lt;a href="https://huggingface.co/spaces/FINAL-Bench/Open-Discovery-Challenge" rel="noopener noreferrer"&gt;FINAL-Bench/Open-Discovery-Challenge&lt;/a&gt;입니다.&lt;/p&gt;

&lt;p&gt;이 글에서 쓴 데이터는 Space가 공개하는 두 엔드포인트가 전부입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/api/seasons&lt;/code&gt;: 시즌별 주제, 표적, 마감일, 상금, 축별 배점&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/api/leaderboard?season=N&lt;/code&gt;: 시즌별 모든 채점 행. 행마다 6개 축 점수, 총점, 등급(&lt;code&gt;tier&lt;/code&gt;), 공개 여부가 들어 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;제출 분자 자체는 대부분 보이지 않습니다. 채점 완료 2만 3,886건 중 &lt;code&gt;public&lt;/code&gt;은 172건, 나머지 99.3%는 제출자가 비공개를 택했습니다. 그래서 이 글은 분자 구조가 아니라 &lt;strong&gt;점수 축&lt;/strong&gt;만 다룹니다. 참가자 이름도 쓰지 않습니다.&lt;/p&gt;

&lt;p&gt;행을 셀 때 세 가지를 구분했습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;기준물질(anchor)&lt;/strong&gt;: 채점기에 함께 올려 둔 비교 기준입니다. &lt;code&gt;visibility&lt;/code&gt; 키가 없고 시즌마다 3~19개입니다(합계 39개). 분석에서 뺐습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;채점 실패 행&lt;/strong&gt;: 축 점수가 비어 있습니다. 도킹 측정 재시도를 소진했거나 채점 중 오류가 난 행으로, 합계 86건이고 뺐습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;강등 행(&lt;code&gt;tier&lt;/code&gt; 2)&lt;/strong&gt;: 채점은 됐지만 순위에서 제외된 행입니다. 사유는 약이 될 수 없는 반응성 구조, 같은 구조의 중복 제출 같은 것입니다. 시즌 1에서 415건, 시즌 2에서 48건, 시즌 3에서 150건, 시즌 4에서 0건입니다. 순위 분석에서는 뺐고, 마지막 절에서 따로 다룹니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;남는 &lt;strong&gt;순위 행&lt;/strong&gt;은 시즌 1이 6,979건, 시즌 2가 7,004건, 시즌 3이 5,094건, 시즌 4가 4,196건입니다. 시즌 1은 9월 30일에 마감했고, 시즌 2(결핵, 상금 2,000달러)는 10월 31일, 시즌 3(샤가스병)은 11월 30일, 시즌 4(비마약성 진통)는 2027년 1월 31일에 마감합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  점수표는 어떻게 생겼나요?
&lt;/h2&gt;

&lt;p&gt;6개 축의 배점은 시즌마다 다르고, 합은 항상 100점입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;활동&lt;/th&gt;
&lt;th&gt;결합&lt;/th&gt;
&lt;th&gt;선택성&lt;/th&gt;
&lt;th&gt;ADMET&lt;/th&gt;
&lt;th&gt;신규성&lt;/th&gt;
&lt;th&gt;합성&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 말라리아&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 결핵&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 샤가스병&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 비마약성 진통&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;시즌이 뒤로 갈수록 활동 배점은 줄고, 결합과 선택성 배점이 늘어납니다. 시즌 3, 4에서는 결합과 선택성만 합쳐도 60점입니다. 반대로 ADMET(15), 신규성(10), 합성(5)은 시즌과 상관없이 같습니다. 이 고정된 30점이 뒤에서 중요해집니다.&lt;/p&gt;

&lt;p&gt;참고로 행마다 6개 축의 합은 총점과 거의 같습니다. 시즌 1의 1,074개 행에서 최대 0.023점 차이가 있었지만 반올림 수준이라 총점을 그대로 썼습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  상위권은 어느 축에서 만점을 받나요?
&lt;/h2&gt;

&lt;p&gt;순위 행을 총점으로 정렬해 상위 50위를 잡고, 축별 평균 점수를 그 축의 배점으로 나눴습니다(득점률).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-2d150f89-1468-4075-8796-585d501e59c5" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-2d150f89-1468-4075-8796-585d501e59c5" alt="상위 50위의 축별 득점률" width="2000" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;활동&lt;/th&gt;
&lt;th&gt;결합&lt;/th&gt;
&lt;th&gt;선택성&lt;/th&gt;
&lt;th&gt;ADMET&lt;/th&gt;
&lt;th&gt;신규성&lt;/th&gt;
&lt;th&gt;합성&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1 말라리아&lt;/td&gt;
&lt;td&gt;98%&lt;/td&gt;
&lt;td&gt;95%&lt;/td&gt;
&lt;td&gt;91%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;30%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71%&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 결핵&lt;/td&gt;
&lt;td&gt;97%&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;44%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;77%&lt;/td&gt;
&lt;td&gt;58%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3 샤가스병&lt;/td&gt;
&lt;td&gt;50%&lt;/td&gt;
&lt;td&gt;94%&lt;/td&gt;
&lt;td&gt;88%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;25%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;88%&lt;/td&gt;
&lt;td&gt;73%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4 비마약성 진통&lt;/td&gt;
&lt;td&gt;61%&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;30%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;76%&lt;/td&gt;
&lt;td&gt;73%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;세 가지가 보입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;결합과 선택성은 시즌 2, 4에서 상위 50위 평균이 거의 100%입니다. 시즌 2에서 결합 만점(25점)을 받은 제출은 순위 행 7,004건 중 831건, 선택성 만점(25점)은 420건입니다. 이 구간에서는 더 세게 붙어도 점수가 오르지 않는 것으로 보입니다. 축 점수에 상한이 걸려 있다는 뜻이고, 이는 배점 설계의 성질이지 분자의 한계를 말하는 것이 아닙니다.&lt;/li&gt;
&lt;li&gt;시즌 3, 4의 활동 축은 50%, 61%에서 멈춰 있습니다. 활동 배점이 10점으로 작은 시즌이라 상위권이 이 축을 포기했거나 못 채웠다고 읽을 수 있지만, 데이터만으로는 어느 쪽인지 가를 수 없습니다.&lt;/li&gt;
&lt;li&gt;신규성과 합성은 58~88%로 중간입니다. 배점이 작아서 총점에 미치는 영향도 작습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;가장 눈에 띄는 것은 ADMET입니다. 15점짜리 축인데 상위 50위조차 25~44%만 받았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  ADMET 축은 얼마나 안 채워졌나요?
&lt;/h2&gt;

&lt;p&gt;ADMET은 용해도, 투과성, 독성 같은 여러 예측 항목을 묶은 축입니다. 시즌별로 분포를 보면 이렇습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-cdd9b6b6-8770-4dbf-a94d-c95bc24a59d9" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-cdd9b6b6-8770-4dbf-a94d-c95bc24a59d9" alt="ADMET 축 점수 분포" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;순위 행 중앙값&lt;/th&gt;
&lt;th&gt;1위 제출&lt;/th&gt;
&lt;th&gt;상위 1% 경계&lt;/th&gt;
&lt;th&gt;관측 최고&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3.52&lt;/td&gt;
&lt;td&gt;3.76&lt;/td&gt;
&lt;td&gt;8.43&lt;/td&gt;
&lt;td&gt;11.92&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4.26&lt;/td&gt;
&lt;td&gt;7.03&lt;/td&gt;
&lt;td&gt;7.98&lt;/td&gt;
&lt;td&gt;11.46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2.88&lt;/td&gt;
&lt;td&gt;3.97&lt;/td&gt;
&lt;td&gt;6.26&lt;/td&gt;
&lt;td&gt;11.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3.56&lt;/td&gt;
&lt;td&gt;5.21&lt;/td&gt;
&lt;td&gt;8.41&lt;/td&gt;
&lt;td&gt;9.33&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;2만 3,273건의 순위 행 중 15점 만점은 한 건도 없습니다. 관측 최고는 시즌 1의 11.92점입니다. 시즌 중앙값은 2.9~4.3점, 즉 배점의 19~28% 수준입니다. 그리고 공식 1위 제출들도 ADMET에서는 3.76점(시즌 1), 7.03점(시즌 2), 3.97점(시즌 3), 5.21점(시즌 4)을 받았습니다. 시즌 2의 1위가 그나마 높은 편입니다.&lt;/p&gt;

&lt;p&gt;여기서 원인을 단정하지는 않겠습니다. 데이터가 말해 주는 것은 "ADMET이 약하다"가 아니라 &lt;strong&gt;"어느 제출도 이 축을 채우지 못했고, 1위들도 예외가 아니다"&lt;/strong&gt; 까지입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  ADMET이 좋은 제출은 순위에서 어디에 있나요?
&lt;/h2&gt;

&lt;p&gt;ADMET 점수 상위 1%(시즌 1 71건, 시즌 2 72건, 시즌 3 52건, 시즌 4 43건)를 따로 뽑아, 총점 순위의 중앙값이 어디인지 봤습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-04d16f89-81ae-4107-99ad-e06284a8370b" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-04d16f89-81ae-4107-99ad-e06284a8370b" alt="ADMET 상위 1% 제출의 총점 순위" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;총점 순위 상위 몇 %에 있는지가 시즌 1은 9.5%, 시즌 2는 18.3%, 시즌 3은 9.8%, 시즌 4는 18.1%입니다. ADMET 점수가 가장 높은 제출 한 건만 보면 더 극적입니다. 시즌 1에서는 6,979건 중 607위, 시즌 2에서는 7,004건 중 4,346위, 시즌 3에서는 5,094건 중 150위, 시즌 4에서는 4,196건 중 2,154위입니다.&lt;/p&gt;

&lt;p&gt;다른 축을 같이 보면 모양이 드러납니다. ADMET 상위 1% 제출들의 다른 축 평균 득점률을 상위 50위와 비교하면 이렇습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;활동(상위1% ADMET / 상위50위)&lt;/th&gt;
&lt;th&gt;결합&lt;/th&gt;
&lt;th&gt;선택성&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;60% / 98%&lt;/td&gt;
&lt;td&gt;81% / 95%&lt;/td&gt;
&lt;td&gt;52% / 91%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;62% / 97%&lt;/td&gt;
&lt;td&gt;80% / 100%&lt;/td&gt;
&lt;td&gt;69% / 100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4% / 50%&lt;/td&gt;
&lt;td&gt;92% / 94%&lt;/td&gt;
&lt;td&gt;41% / 88%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;36% / 61%&lt;/td&gt;
&lt;td&gt;92% / 100%&lt;/td&gt;
&lt;td&gt;75% / 100%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;ADMET이 좋은 제출은 활동, 결합, 선택성 중 하나 이상에서 크게 밀립니다. 특히 시즌 3에서 이 그룹의 활동 득점률은 4%입니다. 상관관계이고 인과는 아닙니다. 다만 &lt;strong&gt;한 축을 끌어올린 분자가 다른 축을 잃는 모양&lt;/strong&gt;이 네 시즌 모두에서 반복됩니다. 상위권이 ADMET을 비워 둔 채 표적 축에 몰리는 것도 이 모양과 맞아떨어집니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  1위가 아직 못 받은 점수는 어디에 있나요?
&lt;/h2&gt;

&lt;p&gt;시즌별 공식 1위 제출이 축별로 받지 못한 점수를 더했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-92d823bb-9fec-4504-89df-eab2fdc6e8b6" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-92d823bb-9fec-4504-89df-eab2fdc6e8b6" alt="시즌 1위가 못 받은 점수" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;1위 총점&lt;/th&gt;
&lt;th&gt;못 받은 점수&lt;/th&gt;
&lt;th&gt;그중 ADMET&lt;/th&gt;
&lt;th&gt;ADMET 비중&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;84.72&lt;/td&gt;
&lt;td&gt;15.28&lt;/td&gt;
&lt;td&gt;11.24&lt;/td&gt;
&lt;td&gt;74%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;87.70&lt;/td&gt;
&lt;td&gt;12.30&lt;/td&gt;
&lt;td&gt;7.97&lt;/td&gt;
&lt;td&gt;65%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;80.30&lt;/td&gt;
&lt;td&gt;19.71&lt;/td&gt;
&lt;td&gt;11.03&lt;/td&gt;
&lt;td&gt;56%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;83.32&lt;/td&gt;
&lt;td&gt;16.68&lt;/td&gt;
&lt;td&gt;9.79&lt;/td&gt;
&lt;td&gt;59%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;1위가 놓친 점수의 56~74%가 ADMET에 있습니다. 시즌 1과 2에서는 활동, 결합, 선택성 세 축이 이미 만점이라 남은 점수가 전부 ADMET, 신규성, 합성입니다.&lt;/p&gt;

&lt;p&gt;간단한 산수를 하나 해 보겠습니다(illustrative, 다른 축을 고정한다고 가정). 시즌 1의 1위가 ADMET만 상위 1% 경계(8.43점)까지 올리면 총점은 84.72에 4.67을 더한 89.39점입니다. 하지만 앞 절에서 본 것처럼 현실에서는 ADMET을 올리는 과정에서 다른 축이 내려가는 경향이 있으므로, 이 계산은 상한선에 가까운 가정입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  상위 50위 안에서는 무엇이 순위를 가르나요?
&lt;/h2&gt;

&lt;p&gt;남은 점수가 ADMET에 몰려 있다면 상위권 순위도 ADMET이 가를까요? 상위 50위 안에서 총점의 분산을 축별로 나눠 봤습니다. 각 축과 총점의 공분산을 총점 분산으로 나눈 몫이고, 여섯 축의 합이 100%입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;활동&lt;/th&gt;
&lt;th&gt;결합&lt;/th&gt;
&lt;th&gt;선택성&lt;/th&gt;
&lt;th&gt;ADMET&lt;/th&gt;
&lt;th&gt;신규성&lt;/th&gt;
&lt;th&gt;합성&lt;/th&gt;
&lt;th&gt;총점 표준편차&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;4%&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;-4%&lt;/td&gt;
&lt;td&gt;1.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;55%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-1%&lt;/td&gt;
&lt;td&gt;17%&lt;/td&gt;
&lt;td&gt;22%&lt;/td&gt;
&lt;td&gt;-1%&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;td&gt;0.59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;13%&lt;/td&gt;
&lt;td&gt;28%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;43%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3%&lt;/td&gt;
&lt;td&gt;9%&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;td&gt;1.91&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;51%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3%&lt;/td&gt;
&lt;td&gt;17%&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;7%&lt;/td&gt;
&lt;td&gt;-3%&lt;/td&gt;
&lt;td&gt;0.54&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;답은 "아니오"입니다. 상위 50위 안의 순위 차이는 대부분 &lt;strong&gt;활동, 결합, 선택성의 미세한 차이&lt;/strong&gt;에서 나옵니다. 시즌 1은 선택성이 68%, 시즌 2와 4는 활동이 55%, 51%, 시즌 3은 선택성이 43%입니다. ADMET의 몫은 3~25%입니다.&lt;/p&gt;

&lt;p&gt;두 관찰을 합치면 이렇습니다. 남은 점수는 ADMET에 있지만, 상위권 안에서는 ADMET을 올리는 것보다 표적 축의 소수점 차이를 다투는 쪽이 순위를 바꿉니다. 시즌 1의 상위 50위는 1위와 50위 총점이 84.72점과 80.18점으로 4.54점 벌어져 있고, 시즌 2는 87.70점과 85.64점으로 2.06점, 시즌 3은 80.30점과 73.19점으로 7.11점, 시즌 4는 83.32점과 80.92점으로 2.40점입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  강등 규칙을 빼면 순위가 어떻게 달라지나요?
&lt;/h2&gt;

&lt;p&gt;강등 행(&lt;code&gt;tier&lt;/code&gt; 2)까지 넣어 총점만으로 상위 50위를 뽑으면 이렇게 됩니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;시즌&lt;/th&gt;
&lt;th&gt;강등 행&lt;/th&gt;
&lt;th&gt;원점수 상위 50위 중 강등 행&lt;/th&gt;
&lt;th&gt;원점수 1위&lt;/th&gt;
&lt;th&gt;공식 1위&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;415&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;38&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;85.90&lt;/td&gt;
&lt;td&gt;84.72&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;87.70&lt;/td&gt;
&lt;td&gt;87.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;150&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;80.96&lt;/td&gt;
&lt;td&gt;80.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;83.32&lt;/td&gt;
&lt;td&gt;83.32&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;시즌 1에서는 원점수 상위 50위 중 38개가 강등 대상입니다. 강등 사유 중 가장 많은 것은 약이 될 수 없는 반응성 구조(시즌 1에서만 아지리딘 287건)이고, 시즌 2, 3에서는 같은 구조를 다시 낸 중복 제출도 강등 사유로 나옵니다. 시즌 1과 3은 강등 행의 원점수가 공식 1위보다 높고, 시즌 2의 원점수 1위는 공식 1위와 같습니다.&lt;/p&gt;

&lt;p&gt;의미는 단순합니다. 반응성이 큰 구조가 높은 총점을 받는 경우가 실제로 있었고, 그래서 강등 필터가 순위표의 일부입니다. 점수만 보고 "이 분자가 가장 좋다"고 말하면 안 되는 이유이기도 합니다. 반대로, 이 필터가 올바른 기준인지는 별개 문제입니다. 필터의 사유는 &lt;code&gt;relegate_reason&lt;/code&gt; 필드에 그대로 남아 있어서 누구나 검토할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이 숫자를 어떻게 읽어야 하나요?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;이 점수는 저희 채점기의 값입니다.&lt;/strong&gt; 계산 기반 예측이고 실험 측정이 아닙니다. 점수가 높다고 약이 된다는 뜻이 아닙니다. 기준물질 중 최고점은 시즌 1이 50.88점, 시즌 2가 39.16점, 시즌 3이 36.14점, 시즌 4가 29.73점으로, 참가자 1위(80~88점)보다 훨씬 낮습니다. 이는 채점기가 무엇을 보상하는지에 관한 정보이지, 기존 물질보다 AI 설계 분자가 낫다는 증거가 아닙니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;포화는 배점 설계의 성질일 수 있습니다.&lt;/strong&gt; 결합과 선택성 축이 만점에 몰려 있다는 사실은 이 축들이 변별력을 잃었다는 신호일 수도 있습니다. 시즌 설계를 고칠 때 저희가 직접 살펴볼 대목입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;스냅샷입니다.&lt;/strong&gt; 2026-10-23 08:33(KST) 기준입니다. 시즌 2, 3, 4는 아직 제출을 받고 있어 숫자가 계속 움직입니다. 스냅샷 직후에 코드를 다시 돌렸을 때는 같은 값이 나왔습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;상관이지 인과가 아닙니다.&lt;/strong&gt; ADMET 상위 1% 그룹은 시즌별로 43~72건뿐입니다. 시즌 3처럼 표본이 작으면 한두 건이 평균을 크게 흔듭니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;계정 수는 &lt;code&gt;hf_user&lt;/code&gt; 문자열 기준입니다.&lt;/strong&gt; 한 사람이 여러 계정을 쓰는지는 알 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  직접 재현하려면?
&lt;/h2&gt;

&lt;p&gt;아래 코드는 위 표의 상위 50위 득점률과 ADMET 최고점을 그대로 계산합니다. 표준 라이브러리만 씁니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;statistics&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;

&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://final-bench-open-discovery-challenge.hf.space&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;AXES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;activity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;binding&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;selectivity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;novelty&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;synthesis&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;season&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/api/seasons&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;seasons&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;season&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;number&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;season&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;weights&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/api/leaderboard?season=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;entries&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="c1"&gt;# 기준물질(anchor)은 visibility 키가 없고, 채점 실패 행은 axes 가 비어 있다
&lt;/span&gt;    &lt;span class="n"&gt;scored&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visibility&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;axes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
    &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;scored&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tier&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="n"&gt;top50&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;frac&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;st&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;axes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;top50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;AXES&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;best_admet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;axes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;S&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;season&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;topic&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: 순위 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;건(강등 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scored&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;건), 1위 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;점&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  상위50 득점률 &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;frac&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;AXES&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  ADMET 만점 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;admet&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; 중 최고 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;best_admet&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, 1위 제출 &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ranked&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;axes&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;admet&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;저희가 스냅샷 시각에 돌린 출력입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;S1 Malaria: 순위 6979건(강등 415건), 1위 84.72점
  상위50 득점률 act=98% bin=95% sel=91% adm=30% nov=71% syn=76%
  ADMET 만점 15 중 최고 11.92, 1위 제출 3.76
S2 Tuberculosis: 순위 7004건(강등 48건), 1위 87.70점
  상위50 득점률 act=97% bin=100% sel=100% adm=44% nov=77% syn=58%
  ADMET 만점 15 중 최고 11.46, 1위 제출 7.03
S3 Chagas disease: 순위 5094건(강등 150건), 1위 80.30점
  상위50 득점률 act=50% bin=94% sel=88% adm=25% nov=88% syn=73%
  ADMET 만점 15 중 최고 11.60, 1위 제출 3.97
S4 Non-opioid analgesia: 순위 4196건(강등 0건), 1위 83.32점
  상위50 득점률 act=61% bin=100% sel=100% adm=30% nov=76% syn=73%
  ADMET 만점 15 중 최고 9.33, 1위 제출 5.21
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;여러분이 돌린 값은 리더보드가 움직인 만큼 다를 수 있습니다. 시즌 1은 마감했으므로 거의 같게 나와야 합니다. 응용으로는 &lt;code&gt;tier&lt;/code&gt;를 무시하고 정렬해 위 강등 표를 재현하거나, 상위 N을 바꿔 포화가 어디까지 이어지는지 볼 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;오픈 디스커버리 챌린지는 무엇을 채점하나요?&lt;/strong&gt;&lt;br&gt;
제출된 분자(SMILES)를 활동, 결합, 선택성, ADMET, 신규성, 합성 가능성의 6개 축으로 100점 만점 채점합니다. 배점은 시즌마다 &lt;code&gt;/api/seasons&lt;/code&gt;에 공개돼 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;만점 축이 많은데 1위도 100점이 안 되는 이유는 무엇인가요?&lt;/strong&gt;&lt;br&gt;
시즌 1, 2에서는 활동, 결합, 선택성이 거의 만점인데도 ADMET(15점), 신규성(10점), 합성(5점) 합계 30점 중 1위가 놓친 점수가 12~15점입니다. 그중 ADMET이 가장 큽니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ADMET 점수가 낮은 1위 분자는 약이 될 수 없나요?&lt;/strong&gt;&lt;br&gt;
알 수 없습니다. 점수는 계산 기반 예측이고, ADMET 축은 그중에서도 예측 항목의 묶음입니다. 이 글은 약효를 주장하지 않으며, 순위표가 무엇을 보상하는지만 설명합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;강등은 무엇이고 왜 순위에서 빼나요?&lt;/strong&gt;&lt;br&gt;
약이 될 수 없는 반응성 구조, 같은 구조의 중복 제출 같은 사유로 순위에서 제외하는 처리입니다. 시즌 1에서는 원점수 상위 50위의 38개가 강등 대상이었습니다. 사유는 &lt;code&gt;relegate_reason&lt;/code&gt;에 남습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;지금도 참여할 수 있나요?&lt;/strong&gt;&lt;br&gt;
시즌 2(결핵, 상금 2,000달러)는 10월 31일, 시즌 3(샤가스병)은 11월 30일, 시즌 4(비마약성 진통)는 2027년 1월 31일에 마감합니다. 시즌별 분자량과 중원자 수 한도가 다르니 제출 전에 &lt;code&gt;/api/seasons&lt;/code&gt;의 &lt;code&gt;limits&lt;/code&gt;를 확인하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/2wiwa-005jeom-caido-1wiilgga-heogingpeiseu-bodeu-44goseseo-jasa-1wi-11gaeyi-duggereul-jae-bwassseubnida-426b"&gt;2위와 0.05점 차이도 1위일까: 허깅페이스 보드 44곳에서 자사 1위 11개의 두께를 재 봤습니다&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/gateun-modelinde-auroc-0835ga-0565ro-sinyag-ai-bencimakeue-sigan-bunhali-pilyohan-iyu-2617"&gt;같은 모델인데 AUROC 0.835가 0.565로: 신약 AI 벤치마크에 시간 분할이 필요한 이유&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>datascience</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>2위와 0.05점 차이도 1위일까: 허깅페이스 보드 44곳에서 자사 1위 11개의 두께를 재 봤습니다</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Wed, 21 Oct 2026 23:47:13 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/2wiwa-005jeom-caido-1wiilgga-heogingpeiseu-bodeu-44goseseo-jasa-1wi-11gaeyi-duggereul-jae-bwassseubnida-426b</link>
      <guid>https://dev.to/vidraft_lab/2wiwa-005jeom-caido-1wiilgga-heogingpeiseu-bodeu-44goseseo-jasa-1wi-11gaeyi-duggereul-jae-bwassseubnida-426b</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;2026-10-22에 허깅페이스 공인 벤치마크 49개 중 순위표가 채워진 44개 보드, 1,108행을 공개 API로 직접 내려받았습니다. 이 가운데 verified 필드가 true인 행은 &lt;strong&gt;0개&lt;/strong&gt;입니다. 저희(VIDRAFT, 허깅페이스 조직명 FINAL-Bench) 1위도 예외가 아닙니다.&lt;/li&gt;
&lt;li&gt;저희가 1위로 올라 있는 보드는 11개입니다. 같은 보드의 다른 조직 최고 모델과의 점수 차를 재 보니 &lt;strong&gt;0.05점부터 16.53점까지&lt;/strong&gt; 흩어져 있었습니다. 11개 중 4개는 격차가 0.5점 미만입니다(MDPBench 0.05, MMMU-Pro 0.08, MMLU-Pro 0.12, ExtractBench 0.41).&lt;/li&gt;
&lt;li&gt;MMLU-Pro의 0.12점은 시험 문항 12,032개의 표본 오차(격차의 표준오차 약 0.42점)보다 작습니다. 이 격차를 95% 수준으로 가르려면 단순 근사로 약 56만 문항이 필요합니다(illustrative). 순위는 사실이지만, 그 순위가 "더 낫다"는 증거라고 읽으면 안 됩니다.&lt;/li&gt;
&lt;li&gt;저희 점수 중 일부는 다수결(maj@16, maj@3)로 집계한 값이고, 보드에는 그 사실이 notes 칸에 적혀 있습니다. 반면 비교 대상 7개 보드 중 6곳의 2위 행에는 notes가 비어 있어 집계 방식을 알 수 없습니다.&lt;/li&gt;
&lt;li&gt;이해관계 고지: 이 글은 저희 순위를 저희가 감사한 글입니다. 제3자 검증이 아닙니다. 모든 수치는 공개 API에서 읽은 값이고, 아래 코드로 누구나 다시 재 볼 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  무엇을 어떻게 쟀나요?
&lt;/h2&gt;

&lt;p&gt;허깅페이스는 &lt;code&gt;benchmark:official&lt;/code&gt; 태그가 붙은 데이터셋을 공인 벤치마크로 부릅니다. 각 벤치마크의 순위표는 모델 저장소의 &lt;code&gt;.eval_results/*.yaml&lt;/code&gt; 파일에서 자동으로 모입니다. 모델 제작자가 직접 올릴 수도 있고, 누구나 풀 리퀘스트로 제출할 수도 있습니다. 이 구조는 허깅페이스 문서(&lt;a href="https://huggingface.co/docs/hub/eval-results" rel="noopener noreferrer"&gt;Evaluation Results&lt;/a&gt;)에 적혀 있습니다.&lt;/p&gt;

&lt;p&gt;순위표 데이터는 REST API로 받을 수 있습니다(&lt;a href="https://huggingface.co/docs/hub/leaderboard-data-guide" rel="noopener noreferrer"&gt;Accessing Benchmark Leaderboard Data&lt;/a&gt;). 저희는 두 개의 엔드포인트만 썼습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /api/datasets?filter=benchmark:official&amp;amp;limit=100&lt;/code&gt;: 공인 벤치마크 목록 (49개)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GET /api/datasets/{id}/leaderboard&lt;/code&gt;: 보드별 행 (순위, 모델, 점수, verified, source, notes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;49개 중 5개는 아직 순위표가 비어 있어서 분석 대상은 44개 보드, 1,108행, 조직 102곳입니다. 값은 2026-10-22 한국시간 오전에 한 번에 내려받았고, 같은 날 두 번 받아 행 수가 같음을 확인했습니다. 순위표는 계속 바뀌므로 이 글의 모든 숫자는 "그날 값"입니다.&lt;/p&gt;

&lt;p&gt;"자사 1위"는 1위 행의 모델 ID가 &lt;code&gt;FINAL-Bench/&lt;/code&gt;로 시작하는 보드로 정의했습니다. "격차"는 그 1위와, 같은 보드에서 FINAL-Bench가 아닌 조직의 가장 높은 행의 점수 차입니다. 같은 조직의 모델끼리는 비교하지 않았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  verified가 0개라는 건 무슨 뜻인가요?
&lt;/h2&gt;

&lt;p&gt;허깅페이스 문서에 따르면 verified 배지는 &lt;code&gt;verifyToken&lt;/code&gt;이 유효할 때만 붙습니다. 평가가 허깅페이스 Jobs에서 inspect-ai로 실행됐다는 암호학적 증명이 있어야 한다는 뜻입니다. 1,108행 가운데 그런 행은 0개였습니다. 44개 보드의 1위 44개 중에도 0개입니다.&lt;/p&gt;

&lt;p&gt;그러니 이 보드의 숫자는 전부 "제출된 값"입니다. 저희 1위 11개도 마찬가지입니다. 출처 칸을 보면 11개 중 7개는 저희 모델 카드를 가리키고 4개는 벤치마크 쪽 페이지 등 외부 링크를 가리킵니다. 다만 출처 링크가 외부라는 사실이 "제3자가 돌렸다"는 뜻은 아닙니다. API는 누가 평가를 실행했는지까지 알려 주지 않습니다. 그래서 이 값을 제3자 검증이라고 부르지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-07764422-6a73-4a0d-845f-81b1a6caf9b2" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-07764422-6a73-4a0d-845f-81b1a6caf9b2" alt="보드 1위 행에 평가 설정이 적힌 비율" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;verified가 없으면 남는 단서는 notes 칸입니다. 평가 설정(샘플 수, 온도, 집계 방식)을 적어 두는 칸인데 필수가 아닙니다. 44개 1위 행 중 notes가 있는 것은 28개입니다. 저희 1위 11개는 11개 모두, 타사 1위 33개는 17개가 적어 두었습니다. 타사 16곳은 어떻게 쟀는지 보드만으로는 알 수 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  1위와 2위의 격차는 얼마나 되나요?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;보드&lt;/th&gt;
&lt;th&gt;등재 수&lt;/th&gt;
&lt;th&gt;저희 1위&lt;/th&gt;
&lt;th&gt;타사 최고&lt;/th&gt;
&lt;th&gt;격차&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MDPBench&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;83.65&lt;/td&gt;
&lt;td&gt;83.60 (Kimi-K3)&lt;/td&gt;
&lt;td&gt;0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MMMU-Pro&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;79.48&lt;/td&gt;
&lt;td&gt;79.40 (Kimi-K2.6)&lt;/td&gt;
&lt;td&gt;0.08&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MMLU-Pro&lt;/td&gt;
&lt;td&gt;142&lt;/td&gt;
&lt;td&gt;88.12&lt;/td&gt;
&lt;td&gt;88.00 (MiniMax-M2.1)&lt;/td&gt;
&lt;td&gt;0.12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ExtractBench&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;90.29&lt;/td&gt;
&lt;td&gt;89.88 (Qwen3.8-Flash-Next)&lt;/td&gt;
&lt;td&gt;0.41&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPQA&lt;/td&gt;
&lt;td&gt;115&lt;/td&gt;
&lt;td&gt;94.44&lt;/td&gt;
&lt;td&gt;93.50 (Kimi-K3)&lt;/td&gt;
&lt;td&gt;0.94&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2026&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;97.70 (Beam-1.0-501B-A23B)&lt;/td&gt;
&lt;td&gt;2.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LEXam-hard&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;45.72&lt;/td&gt;
&lt;td&gt;40.82 (Inkling)&lt;/td&gt;
&lt;td&gt;4.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IFStruct&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;98.95&lt;/td&gt;
&lt;td&gt;93.25 (Agents-A1)&lt;/td&gt;
&lt;td&gt;5.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HMMT Feb 2026&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;92.70 (Kimi-K2.6)&lt;/td&gt;
&lt;td&gt;7.30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typed Decisions&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;81.2&lt;/td&gt;
&lt;td&gt;73.7 (aplomb-1)&lt;/td&gt;
&lt;td&gt;7.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LEXam&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;68.94&lt;/td&gt;
&lt;td&gt;52.41 (DeepSeek-R1)&lt;/td&gt;
&lt;td&gt;16.53&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Typed Decisions는 보드가 0에서 1 사이 값을 쓰기 때문에 100을 곱해 표시했습니다. 이 보드의 1위(0.812)는 학습 분할로 미세조정한 모델이라고 저희 notes에 적혀 있습니다. 같은 notes에는 미세조정하지 않은 제로샷 모델(0.743)이 따로 올라 있고, 그 모델과 타사 최고(0.737)의 차이는 0.6점입니다. 1위 표시가 어떤 조건에서 나왔는지를 알려면 이 칸을 읽어야 합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-617a8ef2-8ed6-4190-b82e-d10cbc52bff2" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-617a8ef2-8ed6-4190-b82e-d10cbc52bff2" alt="자사 1위 11개의 2위와의 격차" width="2000" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;전체 보드로 넓혀 보면 이 현상은 저희만의 것이 아닙니다. 점수가 숫자인 42개 보드에서 1위와 2위의 상대 격차는 중앙값이 5.54%였고, 9개 보드는 1% 미만이었습니다. 순위표의 1위라는 말은 대개 "맨 위에 놓였다"는 뜻이지 "확실히 앞섰다"는 뜻이 아닙니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  0.12점 격차는 통계적으로 의미가 있나요?
&lt;/h2&gt;

&lt;p&gt;보드 점수는 정답률이라서 이항분포로 대충 어림할 수 있습니다. 시험 문항 수가 notes에 적힌 두 보드로 계산했습니다. 두 모델이 같은 문항 수를 풀고 정답이 서로 독립이라는 보수적 가정입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;gap_report&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;se&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;
    &lt;span class="n"&gt;pbar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;p1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;pbar&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;pbar&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.96&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;se&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.96&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;se&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;1.96&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;se&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;gap_report&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12032&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8812&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8800&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;   &lt;span class="c1"&gt;# MMLU-Pro
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;gap_report&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;198&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;9444&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;9350&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;   &lt;span class="c1"&gt;# GPQA Diamond
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;보드&lt;/th&gt;
&lt;th&gt;문항 수&lt;/th&gt;
&lt;th&gt;격차&lt;/th&gt;
&lt;th&gt;격차의 표준오차&lt;/th&gt;
&lt;th&gt;격차의 95% 구간&lt;/th&gt;
&lt;th&gt;가르는 데 필요한 문항 수&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MMLU-Pro&lt;/td&gt;
&lt;td&gt;12,032&lt;/td&gt;
&lt;td&gt;0.12점&lt;/td&gt;
&lt;td&gt;0.42점&lt;/td&gt;
&lt;td&gt;-0.70 ~ +0.94&lt;/td&gt;
&lt;td&gt;약 561,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPQA Diamond&lt;/td&gt;
&lt;td&gt;198&lt;/td&gt;
&lt;td&gt;0.94점&lt;/td&gt;
&lt;td&gt;2.39점&lt;/td&gt;
&lt;td&gt;-3.75 ~ +5.63&lt;/td&gt;
&lt;td&gt;약 4,927&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-f61f6479-faf8-4d1e-8122-5dfe17cc8f60" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-f61f6479-faf8-4d1e-8122-5dfe17cc8f60" alt="격차를 가르는 데 필요한 문항 수" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;두 보드 모두 95% 구간이 0을 포함합니다. 즉 이 점수만으로는 순위가 뒤집혀도 이상하지 않습니다. 이 계산에는 한계가 두 가지 있습니다. 첫째, 같은 문항을 푼 두 모델의 결과는 독립이 아니라서 짝을 지은 검정(McNemar 등)을 쓰면 구간이 훨씬 좁아질 수 있습니다. 하지만 그러려면 문항별 정오답이 필요한데 보드는 총점만 공개합니다. 둘째, GPQA의 저희 점수는 다수결 값이라 이항 근사가 엄밀하지 않습니다. 그래서 위 표는 "이 정도 격차는 총점만으로 구분하기 어렵다"는 감각을 주는 용도이고, 판정은 아닙니다.&lt;/p&gt;

&lt;p&gt;문항이 적은 보드는 더 거칩니다. AIME 2026은 30문제, HMMT 2026은 33문제입니다. 다수결 점수에서는 한 문제가 각각 3.33점, 3.03점이라서 100점과 97.7점의 차이는 한 문제 이하 수준입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  점수는 같은 방식으로 집계된 값인가요?
&lt;/h2&gt;

&lt;p&gt;보드에 한 칸으로 들어오는 점수가 같은 방식으로 만들어졌다는 보장은 없습니다. 저희 1위 행의 notes에는 이렇게 적혀 있습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;보드&lt;/th&gt;
&lt;th&gt;저희 notes에 적힌 집계 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MMLU-Pro&lt;/td&gt;
&lt;td&gt;전체 12,032문항, 샘플 1개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPQA Diamond&lt;/td&gt;
&lt;td&gt;전체 198문항, 최대 16개 샘플 다수결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MMMU-Pro&lt;/td&gt;
&lt;td&gt;전체 1,730문항, 샘플 3개 다수결&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AIME 2026&lt;/td&gt;
&lt;td&gt;30문제, maj@16 = 100.0, 16개 샘플 평균 정확도 = 98.75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HMMT Feb 2026&lt;/td&gt;
&lt;td&gt;33문제, maj@16 = 100.0, 16개 샘플 평균 정확도 = 96.59&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MDPBench&lt;/td&gt;
&lt;td&gt;공개 세트 2,720쪽, 단일 실행, 빈 응답 17쪽은 사고 모드를 끄고 다시 읽음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;다수결 점수는 평균 정확도보다 높게 나오는 경향이 있습니다. AIME에서 저희 값이 100.0인 것도 다수결 때문이고, 같은 모델의 샘플 평균은 98.75입니다. 보드 한 칸에 100을 걸어 두면 독자는 만점이라고 읽습니다. 그래서 notes를 적어 두었습니다.&lt;/p&gt;

&lt;p&gt;그렇다면 비교 상대는 어떻게 집계했을까요? 이 질문에 저희는 답할 수 없습니다. 7개 보드의 2위 행을 확인하니 notes가 있는 곳은 ExtractBench 하나뿐이었고, 그것도 파이프라인 이름과 체크포인트 이름만 적혀 있었습니다. 상대가 단일 샘플이라고 단정할 근거는 없습니다. 그렇다고 같은 방식이라는 근거도 없습니다. 만약 AIME와 HMMT를 평균 정확도로 맞춰 읽는다면 격차는 AIME 1.05점(98.75 대 97.7), HMMT 3.89점(96.59 대 92.7)으로 줄어듭니다. 순위는 그대로이지만 "100점 대 97.7점"이라는 인상보다는 훨씬 조용한 격차입니다. 상대의 집계 방식이 같다는 가정이 붙은 계산이라는 점도 함께 기억해야 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  보드의 두께는 모두 같은가요?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-46b70323-2ea8-4911-8155-debdb6709007" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-46b70323-2ea8-4911-8155-debdb6709007" alt="44개 보드의 등재 수 분포" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;44개 보드의 등재 수는 1개부터 142개까지이고 중앙값은 13.5개입니다. 등재가 3개 이하인 보드가 5개(actava/chi-bench 3, mteb/arguana 3, mercor/APEX-v1-extended 2, VLABench 1, mteb/BRIGHT 1)입니다. 등재가 1개인 보드에서 "1위"는 참가한 사람이 한 명이라는 뜻입니다. 이 5곳 중 저희 1위는 없습니다.&lt;/p&gt;

&lt;p&gt;저희 1위 보드는 등재 수가 6개(IFStruct)부터 142개(MMLU-Pro)까지입니다. 등재가 6개인 보드의 1위와 142개인 보드의 1위는 같은 무게가 아닙니다. 142개 중 1위는 경쟁자가 많다는 점에서, 격차가 작더라도 의미가 있습니다. 반대로 11개나 12개짜리 보드에서의 5점 격차는 참가자가 적어 비교 대상 자체가 얇습니다. 두 방향의 해석이 다 가능하므로, 1위 개수를 세는 숫자 하나로 요약하면 정보가 사라집니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  보드에서 1위를 읽을 때 무엇을 보면 되나요?
&lt;/h2&gt;

&lt;p&gt;저희가 이 감사를 하며 정리한 체크리스트입니다. 남의 1위를 볼 때도, 저희 1위를 볼 때도 같이 적용하시면 됩니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;verified가 true인가.&lt;/strong&gt; 아니라면 제출된 값입니다. 44개 보드 1위 중 true는 0개였습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;notes에 샘플 수와 집계 방식이 있는가.&lt;/strong&gt; 단일 샘플, 다수결, 평균을 구분합니다. 없으면 비교할 수 없다고 표시해 두세요.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;격차를 문항 수와 견주었는가.&lt;/strong&gt; 격차가 표준오차(문항 수 n에 대해 대략 0.5/√n)보다 작으면 순위는 정보가 아닙니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;보드에 몇 개나 올라와 있는가.&lt;/strong&gt; 등재가 한 자릿수면 1위는 "참가자 중 최고"입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;출처가 어디인가.&lt;/strong&gt; 모델 카드는 제작자의 보고입니다. 외부 링크라도 누가 돌렸는지는 따로 확인해야 합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;최고 점수가 만점인가.&lt;/strong&gt; 만점이면 변별력이 끝난 것이라서, 그 보드의 격차는 더 이상 정보를 주지 않습니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  직접 재 보려면 어떻게 하나요?
&lt;/h2&gt;

&lt;p&gt;아래 스크립트는 표준 라이브러리만 씁니다. 2026-10-22 실행 결과를 함께 적습니다. 보드가 바뀌면 값도 바뀝니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lb-audit/1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://huggingface.co/api&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;boards&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/datasets?filter=benchmark:official&amp;amp;limit=100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/datasets/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/leaderboard&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;isinstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rows&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;n_rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;n_verified&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boards&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;verified&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;with_notes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boards&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;notes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;boards&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rows&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_verified&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;verified&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;with_notes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#1 rows with notes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# 44 boards 1108 rows 0 verified 28 #1 rows with notes
&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;bid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;boards&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;top&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;rival&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;rival&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;modelId&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FINAL-Bench/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bid&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; n=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; #1=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; next other org=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;rival&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; gap=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;top&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rival&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;value&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;FINAL-Bench/&lt;/code&gt; 자리에 다른 조직 이름을 넣으면 그 조직의 1위를 같은 방식으로 감사할 수 있습니다. 응답 필드는 &lt;code&gt;rank&lt;/code&gt;, &lt;code&gt;modelId&lt;/code&gt;, &lt;code&gt;value&lt;/code&gt;, &lt;code&gt;verified&lt;/code&gt;, &lt;code&gt;source&lt;/code&gt;, &lt;code&gt;notes&lt;/code&gt;이고, &lt;code&gt;lower_is_better&lt;/code&gt;가 true인 보드(음성 인식 계열 2개)는 점수가 낮을수록 위입니다. 위 스크립트는 API가 정렬해 준 &lt;code&gt;rows[0]&lt;/code&gt;을 1위로 쓰기 때문에 순위는 맞지만, 이런 보드에서는 격차의 부호가 음수로 나옵니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이 감사의 한계는 무엇인가요?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;총점만으로 통계적 유의성을 판정할 수 없습니다. 위 구간은 독립 가정을 넣은 어림값입니다.&lt;/li&gt;
&lt;li&gt;비교 상대의 평가 조건은 대부분 알 수 없습니다. 같은 방식이라고 가정한 계산은 가정이라고 밝혔습니다.&lt;/li&gt;
&lt;li&gt;한 번의 스냅샷입니다. 순위표는 제출이 들어올 때마다 바뀝니다.&lt;/li&gt;
&lt;li&gt;저희 1위를 저희가 감사했습니다. 이 글의 모든 수치는 공개 API 값이라 반박과 재현이 가능하지만, 독립적인 검증은 아닙니다.&lt;/li&gt;
&lt;li&gt;국가별 집계나 조직별 집계 같은 외부 분류는 쓰지 않았습니다. 조직 이름 접두사로만 구분했습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q. 허깅페이스 공인 벤치마크란 무엇인가요?&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;benchmark:official&lt;/code&gt; 태그가 붙은 데이터셋입니다. 모델 저장소의 &lt;code&gt;.eval_results/*.yaml&lt;/code&gt;에 적힌 점수가 순위표로 자동 집계됩니다. 2026-10-22 기준 49개이고 44개에 순위표가 채워져 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. verified 배지는 어떻게 받나요?&lt;/strong&gt;&lt;br&gt;
허깅페이스 문서에 따르면 &lt;code&gt;verifyToken&lt;/code&gt;이 유효해야 합니다. 평가가 허깅페이스 Jobs에서 inspect-ai로 실행됐다는 증명입니다. 이 글에서 확인한 1,108행 가운데 해당 행은 없었습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 순위표 1위는 믿을 수 있나요?&lt;/strong&gt;&lt;br&gt;
1위라는 사실은 그날의 값으로 믿을 수 있습니다. 하지만 "그 모델이 더 낫다"는 주장은 격차, 문항 수, 집계 방식, 출처를 같이 봐야 합니다. 격차가 0.1점 안팎이면 대개 순위가 정보를 주지 못합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 다수결(maj@16) 점수와 평균 정확도는 무엇이 다른가요?&lt;/strong&gt;&lt;br&gt;
다수결은 한 문제에 대해 샘플 16개의 답 중 가장 많이 나온 답으로 채점합니다. 평균 정확도는 16개 샘플을 각각 채점해 평균을 냅니다. 같은 모델이라도 다수결 쪽이 대개 높습니다. 저희 AIME 값은 100.0(다수결)과 98.75(평균)로 갈립니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 이 감사를 다른 조직에도 적용할 수 있나요?&lt;/strong&gt;&lt;br&gt;
네. 위 스크립트의 조직 접두사만 바꾸면 됩니다. 응답이 공개 API라서 별도 키가 필요 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/gongin-rideobodeuro-jeungmyeonghaneun-beob-suciboda-jungyohan-geoseun-nuga-caejeomhaneunya-22e4"&gt;공인 리더보드로 증명하는 법: 수치보다 중요한 것은 누가 채점하느냐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/geuleul-sseuji-anhneun-panjeong-modeli-bencimakeu-137gae-rideobodeueseo-1wie-olrassseubnida-4789"&gt;글을 쓰지 않는 판정 모델이 벤치마크 137개 리더보드에서 1위에 올랐습니다&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>benchmark</category>
      <category>llm</category>
    </item>
    <item>
      <title>같은 모델인데 AUROC 0.835가 0.565로: 신약 AI 벤치마크에 시간 분할이 필요한 이유</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Wed, 21 Oct 2026 00:54:03 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/gateun-modelinde-auroc-0835ga-0565ro-sinyag-ai-bencimakeue-sigan-bunhali-pilyohan-iyu-2617</link>
      <guid>https://dev.to/vidraft_lab/gateun-modelinde-auroc-0835ga-0565ro-sinyag-ai-bencimakeue-sigan-bunhali-pilyohan-iyu-2617</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;공개 ChEMBL 데이터로 hERG 차단 예측을 직접 재현했습니다. 같은 분자, 같은 코드, 같은 LightGBM인데 &lt;strong&gt;무작위 분할은 AUROC 0.835, 연도 기준 시간 분할은 0.565&lt;/strong&gt;였습니다. 점수 차이는 모델이 아니라 시험 문제에서 나왔습니다.&lt;/li&gt;
&lt;li&gt;이유는 시험 분자가 학습 분자와 얼마나 닮았느냐입니다. 학습 집합에서 가장 가까운 분자와의 Tanimoto 유사도 중앙값이 무작위 분할 0.794, 시간 분할 0.365였습니다.&lt;/li&gt;
&lt;li&gt;제출 횟수도 점수를 올립니다. 실력이 0인 제출자가 무작위 예측을 1,000번 내고 최고점을 남기면 공개 점수가 0.500에서 0.552로 오릅니다. 갱신 문턱을 두는 사다리 규칙(Blum and Hardt, ICML 2015)으로 이 부풀림을 줄이는 모습을 시뮬레이션으로 보였습니다.&lt;/li&gt;
&lt;li&gt;이해관계 고지: 이 글이 다루는 LEADBOARD는 VIDRAFT(FINAL-Bench)가 운영하는 신약 예측 도구 벤치마크입니다. 우리 모델을 재는 보드가 아니라 어떤 도구든 올릴 수 있는 시험대입니다. 아래 수치 중 "재현"이라고 표시한 것은 제가 공개 데이터로 다시 돌린 것이고, "보드"라고 표시한 것은 운영 중인 보드 API와 문서에서 읽은 값입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  무작위 분할은 무엇이 문제인가?
&lt;/h2&gt;

&lt;p&gt;신약 후보 물질 예측 논문은 대부분 분자를 무작위로 섞어 학습과 시험으로 나눕니다. 구현이 쉽고 분산이 작기 때문입니다. 그런데 실제로 이 도구를 쓰는 순간은 아직 아무도 재지 않은 분자의 순위를 매길 때입니다. 화학 시리즈는 한 논문 안에서 골격이 같은 분자 수십 개로 나오고, 무작위로 섞으면 그 이웃들이 학습과 시험에 나뉘어 들어갑니다. 모델은 암기한 이웃을 되돌려 주는 것만으로 점수를 얻습니다.&lt;/p&gt;

&lt;p&gt;이를 직접 확인하려고 ChEMBL 37의 hERG(CHEMBL240) IC50 측정값을 받아 같은 특성과 같은 모델로 두 가지 분할을 비교했습니다. 전체 코드는 아래 골자입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lightgbm&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;lgb&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;rdkit&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Chem&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;rdkit.Chem&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;rdFingerprintGenerator&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sklearn.metrics&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;roc_auc_score&lt;/span&gt;

&lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.ebi.ac.uk/chembl/api/data/activity.json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target_chembl_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CHEMBL240&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;standard_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;IC50&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;standard_relation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# offset 을 1000 씩 올리며 전부 받는다 (공개 API, 인증 불필요)
&lt;/span&gt;
&lt;span class="c1"&gt;# 분자마다: pIC50 중앙값, 최초 보고 연도(= 그 분자가 처음 등장한 문헌 연도)
&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;groupby&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;molecule_chembl_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;agg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;smiles&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;canonical_smiles&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;p&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;median&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;year&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;min&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)).&lt;/span&gt;&lt;span class="nf"&gt;reset_index&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;gen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rdFingerprintGenerator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;GetMorganGenerator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;radius&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fpSize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="c1"&gt;# IC50 10 uM 이하면 차단제
&lt;/span&gt;
&lt;span class="n"&gt;cut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2022&lt;/span&gt;
&lt;span class="n"&gt;te_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;cut&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;tr_time&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;cut&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;perm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default_rng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;permutation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;te_rand&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;perm&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;te_time&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;            &lt;span class="c1"&gt;# 시험 크기를 시간 분할과 똑같이 맞춘다
&lt;/span&gt;&lt;span class="n"&gt;tr_rand&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;perm&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;te_time&lt;/span&gt;&lt;span class="p"&gt;):]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;핵심은 시험 크기를 맞추는 것입니다. 무작위 분할의 시험 집합을 시간 분할과 같은 885개로 잘라 두 분할 사이에 다른 것은 "어느 분자가 시험에 들어가느냐" 하나뿐이게 했습니다. 시드 5개로 반복한 결과입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;분할&lt;/th&gt;
&lt;th&gt;학습 / 시험&lt;/th&gt;
&lt;th&gt;AUROC (재현, 5회 평균 ± 표준편차)&lt;/th&gt;
&lt;th&gt;학습과 가장 가까운 분자의 Tanimoto 중앙값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;무작위&lt;/td&gt;
&lt;td&gt;8,729 / 885&lt;/td&gt;
&lt;td&gt;0.835 ± 0.008&lt;/td&gt;
&lt;td&gt;0.794&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;시간 (2022년 이후 최초 보고)&lt;/td&gt;
&lt;td&gt;8,729 / 885&lt;/td&gt;
&lt;td&gt;0.565 ± 0.005&lt;/td&gt;
&lt;td&gt;0.365&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-999f2671-f3eb-49f0-84a2-f7263e41e816" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-999f2671-f3eb-49f0-84a2-f7263e41e816" alt="무작위 분할과 시간 분할의 hERG AUROC, 재현값과 LEADBOARD 문서값 비교" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LEADBOARD 문서는 같은 현상을 hERG 보드에서 무작위 분할 0.818, 시간 분할 0.606으로 적어 두었습니다. 제 재현은 데이터 정제 방식(중앙값 집계, 등호 측정값만 사용, 문턱 pIC50 5.0)이 달라 값이 정확히 같지는 않지만 방향과 크기는 같습니다. 약 0.2 이상이 시험 문제에서 나온 점수입니다.&lt;/p&gt;

&lt;p&gt;운영 중인 hERG 보드의 시간 분할 기준은 2022년이고 학습 8,450개, 시험 1,338개입니다. 보드 API의 값으로 보면 학습하지 않은 기준선 세 가지의 AUROC는 상수 예측 0.5, 최근접 이웃 0.566, Morgan 지문과 LightGBM 0.606입니다. 제 재현의 시간 분할 0.565는 이 기준선들과 같은 범위에 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  시간 분할이면 문제가 끝나는가?
&lt;/h2&gt;

&lt;p&gt;아닙니다. 시간 분할은 더 정직한 질문일 뿐이고, 그 질문 하나가 해마다 다른 시험입니다. 같은 모델로 "해당 연도 이전으로 학습해 그해를 예측"하는 시험을 연도별로 돌려 봤습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-bb0cab46-ce97-45de-b93f-4f80e9655f48" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-bb0cab46-ce97-45de-b93f-4f80e9655f48" alt="연도별 hERG AUROC 재현. 2016년 0.726에서 2025년 0.515까지 폭이 크다" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;13개 연도의 평균은 0.647이지만 최고 0.726(2016), 최저 0.515(2025)로 폭이 0.21입니다. 시험 크기가 156개(2025, 연중 집계)에서 751개(2018)까지 다르다는 점도 같이 봐야 합니다. 이 보드가 단일 점수만 내지 않고 기준선과 실험 잡음의 크기를 함께 공개하는 이유가 여기에 있습니다.&lt;/p&gt;

&lt;p&gt;실험 잡음은 이런 뜻입니다. 같은 화합물을 서로 다른 연구실이 쟀을 때 값이 얼마나 벌어지는가입니다. hERG 보드는 857개 화합물, 5,185개 측정 쌍에서 단일 측정의 표준편차를 약 0.266 로그 단위, 쌍 차이의 중앙값을 0.148, 90분위를 1.34로 계산해 두었습니다. 정답표 자체가 이만큼 흔들리므로 그 아래 오차를 "개선"이라 부르는 것은 의미가 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  학습하지 않은 기준선이 상수 예측을 못 이기는 보드가 몇 개인가?
&lt;/h2&gt;

&lt;p&gt;운영 중인 보드 API를 전부 받아 집계했습니다(2026-10-21 기준, 보드 46개, 시험 화합물 합계 57,698개).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;열린 보드 / 계획&lt;/td&gt;
&lt;td&gt;46 / 96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;분할 등급&lt;/td&gt;
&lt;td&gt;시간 분할 44개, 골격 분할 2개, 무작위 분할 0개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;정답 등급&lt;/td&gt;
&lt;td&gt;공개 출처 정제(P1) 35개, 공개 출처 단위 변환 포함(P2) 11개, 비공개 정답(P3)·미래 예측(P4) 0개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1차 지표&lt;/td&gt;
&lt;td&gt;MAE 44개, 프로파일 상관 1개, AUROC 1개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기준선 세 종이 모두 상수 예측을 MAE로 못 이긴 보드&lt;/td&gt;
&lt;td&gt;11개&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;마지막 줄은 직관과 어긋나므로 설명이 필요합니다. 시간 분할에서는 시험 시기의 값 분포가 학습 시기와 달라집니다. 순위를 맞히는 능력(AUROC)은 남아도 값의 크기를 맞히는 능력(MAE)은 상수 평균값보다 나빠질 수 있습니다. hERG가 그 사례입니다. Morgan+LightGBM은 AUROC 0.606으로 순위를 약간 맞히지만 MAE는 상수 예측의 0.589보다 낫지 못합니다.&lt;/p&gt;

&lt;p&gt;반대편에는 기준선이 이미 높은 보드가 있습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;보드&lt;/th&gt;
&lt;th&gt;Morgan+LightGBM AUROC (보드)&lt;/th&gt;
&lt;th&gt;최선 기준선 MAE / 실험 잡음 SD&lt;/th&gt;
&lt;th&gt;MAE로 상수 예측을 이기는가&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;hERG&lt;/td&gt;
&lt;td&gt;0.606&lt;/td&gt;
&lt;td&gt;2.21&lt;/td&gt;
&lt;td&gt;아니오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CYP3A4&lt;/td&gt;
&lt;td&gt;0.572&lt;/td&gt;
&lt;td&gt;2.04&lt;/td&gt;
&lt;td&gt;아니오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;EGFR&lt;/td&gt;
&lt;td&gt;0.563&lt;/td&gt;
&lt;td&gt;3.05&lt;/td&gt;
&lt;td&gt;아니오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BRD4&lt;/td&gt;
&lt;td&gt;0.861&lt;/td&gt;
&lt;td&gt;4.79&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BACE1&lt;/td&gt;
&lt;td&gt;0.923&lt;/td&gt;
&lt;td&gt;8.04&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thrombin&lt;/td&gt;
&lt;td&gt;0.995&lt;/td&gt;
&lt;td&gt;10.96&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;"MAE / 실험 잡음 SD"가 1에 가까울수록 기준선이 이미 측정 한계에 닿아 있다는 뜻이고, 클수록 개선 여지가 남아 있다는 뜻입니다. 보드마다 이 숫자가 다르다는 것이 보드를 하나의 합산 점수로 묶지 않는 이유입니다. Thrombin과 BACE1은 기준선 AUROC가 0.9를 넘는 반면, 독성과 대사 쪽 보드(hERG, CYP)는 0.6 근처에서 멈춥니다. 왜 그런지는 이 표만으로 단정할 수 없습니다. 다만 어느 보드가 얼마나 어려운지는 기준선과 잡음 크기를 같이 놓아야 말할 수 있다는 점은 분명합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  같은 사람이 여러 번 내면 점수는 얼마나 부풀어 오르는가?
&lt;/h2&gt;

&lt;p&gt;시험 문제를 바꿔도 남는 문제가 제출 횟수입니다. 공개 점수를 돌려주는 보드에서는 매번 조금씩 다른 예측을 내고 최고점을 남기는 것만으로 점수가 올라갑니다. 보드 문서는 사다리 규칙(Blum and Hardt, ICML 2015)을 쓴다고 밝힙니다. 새 점수는 이전 최고점을 실험 잡음보다 크게 넘을 때만 공개하고, 아니면 이전 최고점이 유지됩니다.&lt;/p&gt;

&lt;p&gt;이 효과를 직접 보려고 시뮬레이션을 돌렸습니다. 이 시뮬레이션은 &lt;strong&gt;illustrative&lt;/strong&gt;입니다. 실제 보드의 제출 기록이 아니라 가정한 상황입니다. 시험 집합 1,338개(양성 784개, hERG 보드와 같은 크기와 비율)에 실력이 전혀 없는 제출자가 무작위 예측을 k번 냅니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1338&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;784&lt;/span&gt;
&lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;r_&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;zeros&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;span class="n"&gt;sd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sqrt&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;   &lt;span class="c1"&gt;# 찍기의 AUROC 표준편차, 약 0.016
&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;eta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;roc_auc_score&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;rng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;      &lt;span class="c1"&gt;# 실력 0 제출
&lt;/span&gt;        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;eta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;       &lt;span class="c1"&gt;# 사다리 규칙: 문턱 eta 보다 크게 넘어야 갱신
&lt;/span&gt;            &lt;span class="n"&gt;best&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;best&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;eta=0&lt;/code&gt;이면 그냥 최고점 유지입니다. 문턱을 찍기 표준편차(0.016)의 1배, 2배, 3배로 두고 시도마다 반복한 평균입니다(제출 1,000회 조건은 60번 반복).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;제출 횟수&lt;/th&gt;
&lt;th&gt;최고점 유지&lt;/th&gt;
&lt;th&gt;문턱 1 SD&lt;/th&gt;
&lt;th&gt;문턱 2 SD&lt;/th&gt;
&lt;th&gt;문턱 3 SD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.500&lt;/td&gt;
&lt;td&gt;0.498&lt;/td&gt;
&lt;td&gt;0.500&lt;/td&gt;
&lt;td&gt;0.502&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;0.524&lt;/td&gt;
&lt;td&gt;0.521&lt;/td&gt;
&lt;td&gt;0.514&lt;/td&gt;
&lt;td&gt;0.505&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;td&gt;0.540&lt;/td&gt;
&lt;td&gt;0.536&lt;/td&gt;
&lt;td&gt;0.528&lt;/td&gt;
&lt;td&gt;0.519&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;0.552&lt;/td&gt;
&lt;td&gt;0.548&lt;/td&gt;
&lt;td&gt;0.539&lt;/td&gt;
&lt;td&gt;0.533&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-b183b181-140e-40cf-9bc9-0e2f1e32cde6" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%2Frender%2Fzf-b183b181-140e-40cf-9bc9-0e2f1e32cde6" alt="제출 횟수에 따라 실력 0 제출자의 공개 AUROC가 오르는 시뮬레이션. 문턱이 클수록 덜 오른다" width="1600" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;두 가지를 읽을 수 있습니다. 첫째, 제출 1,000번만으로 실력 0이 0.552까지 올라갑니다. hERG 보드의 최근접 이웃 기준선(0.566)과 0.014 차이입니다. 보드 점수 하나만 보면 찍기와 모델이 구별되지 않는 구간이 실제로 있습니다. 둘째, 문턱을 키울수록 부풀림이 줄지만 공짜는 아닙니다. 문턱 3 SD(약 0.048)에서는 진짜로 0.03 개선한 모델도 공개 점수에 반영되지 않습니다. 사다리 규칙은 "구별 가능한 개선의 최소 단위"를 보드가 정하는 일이고, 그 단위를 정하는 근거로 보드는 실험 잡음을 씁니다.&lt;/p&gt;

&lt;p&gt;이 시뮬레이션은 가장 단순한 공격인 무작위 제출만 다룹니다. 피드백을 이용해 예측을 조금씩 고쳐 가는 적응형 공격은 더 강하고, 사다리 규칙 논문은 그 경우의 오차 상한을 제출 횟수의 로그에 의존하는 형태로 증명했습니다. 이 글의 시뮬레이션은 그 증명을 재현한 것이 아닙니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  연도 하나가 점수를 만들어 낼 수 있는가?
&lt;/h2&gt;

&lt;p&gt;시간 분할에도 함정이 하나 더 있습니다. 시험 시기를 가르는 변수가 정답과 함께 움직이면 모델은 화학이 아니라 달력을 배웁니다. LEADBOARD의 시판 후 퇴출 보드가 그 사례입니다. 보드 문서에 따르면 퇴출률은 승인 연대에 따라 1990년대 7.8%, 2010년대 1.2%로 달라집니다. 분자 구조를 전혀 보지 않고 승인 연도만 읽는 예측기가 AUROC 0.636을 얻습니다. 승인 연도를 짝지어 대조군을 맞추면 이 값이 0.504로 내려가 찍기 수준이 됩니다.&lt;/p&gt;

&lt;p&gt;운영 중인 보드 API에도 같은 값이 남아 있습니다. 대조군 연도 예측기의 AUROC가 0.5038이고, 열린 시험은 연도를 맞춘 쪽입니다. 구조만 보는 Morgan+LightGBM 기준선은 이 보드에서 0.593으로 그 위에 있습니다. 시험 184개, 학습 408개로 작아서 이 차이의 신뢰구간이 좁다고 말할 수는 없습니다. 보드가 같은 자리에 표본 잡음(약 0.044)을 함께 적어 둔 것도 그래서입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  첫 제출을 하려면?
&lt;/h2&gt;

&lt;p&gt;각 보드는 구조만 담긴 시험 파일을 내려받게 하고, 제출은 &lt;code&gt;compound_id,prediction&lt;/code&gt; CSV입니다. 어떤 도구든 받습니다. 학습한 모델, 물리 엔진, 언어 모델, 경험 규칙 모두 가능합니다. 채점은 정답을 가진 별도 하드웨어에서 돌아가고 Space에는 정답이 없습니다. 보드마다 채워진 프롬프트와 실행 가능한 뼈대 코드가 들어 있어 코딩 에이전트도 첫 제출까지 갈 수 있습니다.&lt;/p&gt;

&lt;p&gt;한 가지 한계는 분명히 적어 두어야 합니다. 현재 열린 46개 보드는 모두 정답이 공개 출처에서 나온 P1·P2 등급입니다. 정답이 어딘가에 공개돼 있으므로 "조회해서 베끼는 길"을 막는 일은 보드의 별도 방어 조항이 맡고, 정답을 아예 비공개로 두는 P3 등급과 아직 존재하지 않는 미래 값을 맞히는 P4 등급은 등급표에는 있지만 현재 열린 보드에는 없습니다. 이 글의 결론도 거기까지입니다. 시간 분할과 사다리 규칙이 막아 주는 것은 "분할이 만든 부풀림"과 "횟수가 만든 부풀림"이지 정답 조회가 아닙니다.&lt;/p&gt;

&lt;p&gt;재현 한계도 있습니다. 위 재현은 한 가지 지문(Morgan 반경 2, 2048비트)과 한 가지 모델(LightGBM)입니다. 다른 특성이나 사전학습 표현에서 격차가 얼마나 줄지는 재 보지 않았습니다. 측정값 집계와 문턱을 바꾸면 절대값이 달라지며, 보드 값과 0.02 안팎의 차이가 나는 이유가 이것입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q. 무작위 분할 점수는 틀린 값인가요?&lt;/strong&gt;&lt;br&gt;
틀린 것이 아니라 다른 질문의 답입니다. "이미 아는 화학 시리즈 안에서 빈 칸을 채우는 능력"을 재는 점수이고, 새 분자의 순위를 매기는 능력과는 별개입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 시간 분할 점수가 낮으면 모델이 쓸모없다는 뜻인가요?&lt;/strong&gt;&lt;br&gt;
아닙니다. 새 화학 공간에서의 기대 성능이 0.6 근처라는 뜻이며, 의사결정에 쓸 때는 보드가 같이 공개하는 실험 잡음과 기준선 대비 얼마나 나은지를 함께 봐야 합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. AUROC와 MAE 중 무엇을 봐야 하나요?&lt;/strong&gt;&lt;br&gt;
쓰임에 따라 다릅니다. 후보를 줄 세워 상위 몇 개만 합성할 때는 순위(AUROC)가, 값 자체를 임계와 비교해 걸러낼 때는 크기(MAE)가 중요합니다. hERG 보드는 이 둘이 갈리는 대표 사례입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 사다리 규칙의 문턱은 어떻게 정하나요?&lt;/strong&gt;&lt;br&gt;
이 글의 시뮬레이션은 찍기 표준편차의 배수를 임의로 둔 것입니다. 보드는 실험 잡음을 기준으로 삼는다고 문서에 밝혔고, 문턱이 클수록 부풀림은 줄고 작은 진짜 개선도 가려진다는 교환 관계가 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q. 코드를 다시 돌려 볼 수 있나요?&lt;/strong&gt;&lt;br&gt;
위 골자는 공개 ChEMBL API와 rdkit, lightgbm, scikit-learn만 씁니다. 보드와 같은 숫자가 나온다고 보장하지는 않으며, 데이터 정제 선택이 값에 영향을 줍니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  출처와 링크
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;LEADBOARD 보드 (Hugging Face Space): &lt;a href="https://huggingface.co/spaces/FINAL-Bench/leadboard" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/FINAL-Bench/leadboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;저장소와 명세: &lt;a href="https://github.com/final-bench/leadboard" rel="noopener noreferrer"&gt;https://github.com/final-bench/leadboard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Blum and Hardt, "The Ladder: A Reliable Leaderboard for Machine Learning Competitions", ICML 2015&lt;/li&gt;
&lt;li&gt;ChEMBL 37 (EMBL-EBI, CC BY-SA 3.0): &lt;a href="https://www.ebi.ac.uk/chembl/" rel="noopener noreferrer"&gt;https://www.ebi.ac.uk/chembl/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;시험 문제는 모델 점수의 일부입니다. 점수를 읽을 때 분할 방식, 시험 크기, 실험 잡음, 제출 횟수를 같이 적어 두는 습관이 무작위 분할의 0.835와 시간 분할의 0.565 사이를 메워 줍니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/gongin-rideobodeuro-jeungmyeonghaneun-beob-suciboda-jungyohan-geoseun-nuga-caejeomhaneunya-22e4"&gt;공인 리더보드로 증명하는 법: 수치보다 중요한 것은 누가 채점하느냐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/vidraft_lab/geuleul-sseuji-anhneun-panjeong-modeli-bencimakeu-137gae-rideobodeueseo-1wie-olrassseubnida-4789"&gt;글을 쓰지 않는 판정 모델이 벤치마크 137개 리더보드에서 1위에 올랐습니다&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>benchmark</category>
      <category>datascience</category>
    </item>
    <item>
      <title>글을 쓰지 않는 판정 모델이 벤치마크 137개 리더보드에서 1위에 올랐습니다</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Tue, 20 Oct 2026 01:26:17 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/geuleul-sseuji-anhneun-panjeong-modeli-bencimakeu-137gae-rideobodeueseo-1wie-olrassseubnida-4789</link>
      <guid>https://dev.to/vidraft_lab/geuleul-sseuji-anhneun-panjeong-modeli-bencimakeu-137gae-rideobodeueseo-1wie-olrassseubnida-4789</guid>
      <description>&lt;h2&gt;
  
  
  결론부터
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://huggingface.co/FINAL-Bench/Darwin-27B-ZTC-v9" rel="noopener noreferrer"&gt;Darwin-27B-ZTC-v9&lt;/a&gt;가 &lt;strong&gt;S1MB 영어판 리더보드 1위&lt;/strong&gt;입니다. 2026년 10월 20일 라이브 기준입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;순위&lt;/th&gt;
&lt;th&gt;모델&lt;/th&gt;
&lt;th&gt;보르다&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Darwin-27B-ZTC-v9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;90.38&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;kettei-fat v1.0&lt;/td&gt;
&lt;td&gt;90.14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Superion S1&lt;/td&gt;
&lt;td&gt;89.53&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;D3 (27B)&lt;/td&gt;
&lt;td&gt;89.28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Darwin-27B-ZTC-v5&lt;/td&gt;
&lt;td&gt;88.44&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;모델 197개, 벤치마크 137개입니다. 가중치는 Apache-2.0으로 공개돼 있습니다.&lt;/p&gt;

&lt;p&gt;다만 "리더보드 1위"라는 말은 &lt;strong&gt;집계 방식을 붙이지 않으면 거의 의미가 없습니다.&lt;/strong&gt; 그래서 아래에 무엇을 잰 숫자인지 적습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  보르다 집계가 재는 것
&lt;/h2&gt;

&lt;p&gt;대부분의 리더보드는 과제별 점수를 평균합니다. S1MB는 다릅니다. 137개 벤치마크의 순위를 각각 매긴 뒤 그 순위를 합산합니다. 이것이 보르다 방식입니다.&lt;/p&gt;

&lt;p&gt;차이가 큽니다. 평균을 쓰면, 점수가 0.1에서 0.9까지 넓게 퍼지는 벤치마크가 0.80에서 0.84에 몰려 있는 벤치마크보다 훨씬 큰 영향을 줍니다. &lt;strong&gt;누가 그렇게 정한 것이 아니라 지표의 눈금이 그렇게 생겨서 그렇습니다.&lt;/strong&gt; 그래서 대부분 평범하고 퍼짐이 큰 과제 서너 개만 잘하는 모델이 평균 상위에 오를 수 있습니다.&lt;/p&gt;

&lt;p&gt;보르다에서는 모든 벤치마크가 같은 것을 기여합니다. 참가자 중 몇 등인가입니다. 0.3 차이로 이기든 0.001 차이로 이기든 같은 1등입니다. 1위가 되려면 &lt;strong&gt;137개 판에서 동시에 고루 잘해야 합니다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;대신 보르다가 버리는 것이 있습니다. 차이의 크기입니다. 상위권이 모든 과제에서 간발의 차이여도 순위표는 확신에 찬 모습으로 나옵니다.&lt;/p&gt;

&lt;p&gt;그래서 두 칸을 같이 보십시오. S1MB는 보르다 옆에 과제 평균도 공개합니다. 현재 영어판에서 &lt;strong&gt;이 모델은 과제 평균 기준으로는 72.20으로 2위&lt;/strong&gt;이고, 과제 평균 1위는 보르다 3위 모델입니다. 어느 쪽도 틀리지 않았습니다. 서로 다른 질문에 답하는 칸입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이 모델은 글을 쓰지 않습니다
&lt;/h2&gt;

&lt;p&gt;ZTC는 zero token choice의 줄임말입니다. 상황과 유형이 정해진 질문을 받으면, 순전파 한 번에 보기별 확률을 돌려줍니다. 텍스트 생성은 없습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;유형&lt;/th&gt;
&lt;th&gt;돌려주는 것&lt;/th&gt;
&lt;th&gt;예&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;noul&lt;/td&gt;
&lt;td&gt;명제가 참일 확률&lt;/td&gt;
&lt;td&gt;이 문의는 오늘 답해야 하는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;choice&lt;/td&gt;
&lt;td&gt;보기별 확률&lt;/td&gt;
&lt;td&gt;어느 팀이 맡아야 하는가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;score&lt;/td&gt;
&lt;td&gt;단계별 확률&lt;/td&gt;
&lt;td&gt;이 후기의 만족도는 1에서 5 중 어디인가&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;파싱할 출력이 없습니다. 천 번째 호출에서 형식이 흐트러질 일도 없습니다. 추론 토큰을 기다릴 필요도 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  정확도보다 보정이 중요합니다
&lt;/h2&gt;

&lt;p&gt;여기가 실무에서 가장 과소평가되는 부분입니다. &lt;strong&gt;정확도만으로는 관문을 만들 수 없습니다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;관문에는 문턱이 필요하고, 문턱에는 말한 대로의 확률이 필요합니다. 0.9라고 할 때 열 번 중 아홉 번 맞는다면, 0.9 위는 자동 승인하고 나머지는 사람에게 넘기는 규칙을 세울 수 있고 &lt;strong&gt;배포 전에 오류율을 예측할 수 있습니다.&lt;/strong&gt; 평균 정확도는 높은데 0.9가 실제로는 0.6에서 0.99 사이를 뜻한다면, 안전한 문턱이 없습니다.&lt;/p&gt;

&lt;p&gt;그래서 판정 벤치마크는 보정을 직접 점수로 잽니다. 예·아니오는 브라이어 점수, 보기 선택은 정답 보기에 실린 확률, 척도는 기댓값 오차입니다. &lt;strong&gt;정확도 표에서 1등이어도 관문으로는 쓸 수 없는 모델이 있습니다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;공개된 기준선 대비 일부 과제 결과입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;과제&lt;/th&gt;
&lt;th&gt;기준선&lt;/th&gt;
&lt;th&gt;v9&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;boardgameqa-choice&lt;/td&gt;
&lt;td&gt;0.500&lt;/td&gt;
&lt;td&gt;0.953&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;snli-choice&lt;/td&gt;
&lt;td&gt;0.790&lt;/td&gt;
&lt;td&gt;0.968&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gretel-pii-choice (개체 유형)&lt;/td&gt;
&lt;td&gt;0.653&lt;/td&gt;
&lt;td&gt;0.981&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;argument-quality-choice&lt;/td&gt;
&lt;td&gt;0.857&lt;/td&gt;
&lt;td&gt;0.959&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ud-ewt-choice (품사)&lt;/td&gt;
&lt;td&gt;0.433&lt;/td&gt;
&lt;td&gt;0.833&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  점검이 싸지면 설계가 바뀝니다
&lt;/h2&gt;

&lt;p&gt;에이전트의 토큰이 어디로 가는지 세어 보십시오. 상당 부분이 &lt;strong&gt;에이전트가 스스로에게 묻는 작은 질문&lt;/strong&gt;입니다. 이 도구 호출은 안전한가. 이 문단이 질문에 답하는가. 직전 단계는 성공했는가. 사람에게 넘겨야 하는가.&lt;/p&gt;

&lt;p&gt;전부 예·아니오, 하나 고르기, 점수 매기기입니다. 그런데 지금은 하나하나가 완전한 생성 비용을 치릅니다. 분당 천 번이면 점검이 일보다 비쌉니다. 그래서 팀들이 조용히 점검을 뺍니다. &lt;strong&gt;필요 없다고 판단해서가 아니라 감당이 안 돼서입니다.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;점검이 순전파 한 번이면 계산이 뒤집힙니다. 모든 도구 호출에 관문을 걸고, 검색된 모든 문단에 점수를 매기고, 모든 단계의 성공을 확인하고, 결정마다 확신도를 남길 수 있습니다. 상신 규칙이 감이 아니라 문턱이 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  띄우는 법
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hf download FINAL-Bench/Darwin-27B-ZTC-v9 systemone_config.json &lt;span class="nt"&gt;--local-dir&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
transformers serve FINAL-Bench/Darwin-27B-ZTC-v9 &lt;span class="nt"&gt;--decision-config&lt;/span&gt; systemone_config.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;허깅페이스 &lt;code&gt;transformers serve&lt;/code&gt;의 공개 &lt;code&gt;/v1/systemone&lt;/code&gt; 종단점에서 돕니다. 그 규격으로 짠 클라이언트는 고치지 않고 그대로 붙습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이 주장을 확인하는 법
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard" rel="noopener noreferrer"&gt;리더보드&lt;/a&gt;를 직접 열어 칸과 날짜를 보십시오. 라이브이고 197개 항목이 움직입니다.&lt;/li&gt;
&lt;li&gt;공개 리더보드는 대부분 자가 보고와 검증 항목이 섞여 있습니다. S1MB도 그 점을 안내합니다.&lt;/li&gt;
&lt;li&gt;가장 확실한 방법은 &lt;strong&gt;자기 데이터로 재보는 것&lt;/strong&gt;입니다. 실제 쓰려는 문턱에서 확률이 버티는지 보면 됩니다. 가중치가 공개돼 있으니 결재가 아니라 하루 실험으로 끝납니다.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>korean</category>
    </item>
    <item>
      <title>추론 전용 NPU만으로 밑바닥부터 사전학습: VKORE-46M-NPU 공개</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Wed, 14 Oct 2026 05:49:14 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/curon-jeonyong-npumaneuro-mitbadagbuteo-sajeonhagseub-vkore-46m-npu-gonggae-201j</link>
      <guid>https://dev.to/vidraft_lab/curon-jeonyong-npumaneuro-mitbadagbuteo-sajeonhagseub-vkore-46m-npu-gonggae-201j</guid>
      <description>&lt;p&gt;&lt;strong&gt;요약(TL;DR):&lt;/strong&gt; 비드래프트가 추론 전용 NPU만으로 소형 언어모델을 0부터(from scratch) 사전학습하는 데 성공하고, 결과물 &lt;code&gt;VKORE-46M-NPU&lt;/code&gt;를 허깅페이스에 모델·모델카드·비교자료와 함께 공개했다. "추론 전용 NPU는 역전파를 못 해 학습이 불가능하다"는 통설을 정면으로 뒤집은, 공개 문헌상 사실상 세계 최초 사례다. 같은 모델을 GPU에서 동일 조건으로 학습한 결과와 손실 궤적 상관계수가 0.99에 달했다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1fasluj2rz7s3liskk3t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1fasluj2rz7s3liskk3t.jpg" alt="VKORE-46M-NPU 인포그래픽" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 "추론 전용 NPU에서 학습"이 사건인가
&lt;/h2&gt;

&lt;p&gt;추론 전용 NPU는 forward 추론에 맞춰 설계된다. 학습에는 역전파(backpropagation), 옵티마이저 상태, 다중 칩 동기화가 필요한데, 이 경로가 추론 스택에는 보통 없다. 그래서 업계에서는 LoRA 미세조정은 물론 사전학습은 구조적으로 불가능하다는 견해가 정설이었다. 비드래프트는 추론만 하도록 설계된 칩 위에서 역전파를 직접 수행해, 사전학습된 가중치 없이 처음부터 모델을 학습시켰다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphoi2298dq6xt1m7dg8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fphoi2298dq6xt1m7dg8c.png" alt="NPU, 누가 추론만 한다고 했나" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  증거: 같은 모델, 두 하드웨어의 손실 곡선
&lt;/h2&gt;

&lt;p&gt;가장 신뢰가 가는 부분은 검증 방법이다. 동일한 모델을 동일 초기화·데이터·스케줄로 NPU 32칩과 GPU에서 각각 0부터 학습시켜 비교했다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;두 학습의 &lt;strong&gt;손실 궤적 상관계수 0.99&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;처리량(tok/s)도 동급 수준으로 수렴&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;손실이 떨어지는 그림 한 장은 증명이 아니다. 저정밀 커널이 gradient를 뭉개면 GPU와 다른 궤적을 그린다. 같은 조건에서 GPU 레퍼런스와 손실 곡선이 0.99로 겹친다는 것은, 역전파와 옵티마이저 업데이트가 수치적으로 레퍼런스와 사실상 같은 일을 하고 있다는 강한 증거다.&lt;/p&gt;

&lt;h2&gt;
  
  
  구형 칩에서도 됐다
&lt;/h2&gt;

&lt;p&gt;이번 성과는 최신 칩이 아니라 2025년 출시된 1세대 추론 전용 NPU(32칩)에서 이뤄졌다. 구형 하드웨어로도 가능했던 만큼 차세대 NPU에서는 성능 향상 여지가 크다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이제 NPU 하나로 다 된다
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;사전학습(from scratch)&lt;/li&gt;
&lt;li&gt;LoRA 미세조정&lt;/li&gt;
&lt;li&gt;추론 가속 (범용 공개 모델에도 적용 확인)&lt;/li&gt;
&lt;li&gt;양자화 모델 구동·가속&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;비드래프트는 이 기술을 'VKORE'라는 NPU 전용 소프트웨어 계층으로 통합하고 있다. 엔비디아가 GPU 하드웨어보다 CUDA라는 소프트웨어 생태계로 지배력을 구축했듯, VKORE는 NPU에서 그와 같은 토대를 지향하는 'NPU판 CUDA'다. 특정 GPU와 그 소프트웨어 생태계 의존도를 낮추는 공통 가속 계층이다.&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 중요한가
&lt;/h2&gt;

&lt;p&gt;최신 GPU 서버는 매우 고가에 납품도 오래 걸리고 전력·상면 부담이 크다. 반면 저렴하고 전력이 적은 NPU를 추론뿐 아니라 학습까지 쓸 수 있으면, 기업이 고가 GPU를 오래 기다리지 않고도 사무실에 데스크톱처럼 설치해 자체 모델을 길러낼 수 있다. 민감 데이터를 외부로 내보내지 않고 자체 공간에서 학습·서비스까지 가능하다.&lt;/p&gt;

&lt;p&gt;공개 모델은 공개 데이터셋으로 학습돼 짧은 영어 이야기를 생성한다. 핵심 학습 기법은 자체 개발해 특허 출원 중이며, 구체적 방식은 추후 논문으로 공개한다. 핵심 학습 코드는 지식재산 보호를 위해 비공개다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문(FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;정말 추론 전용 NPU에서 역전파를 돌렸나?&lt;/strong&gt;&lt;br&gt;
그렇다. 추론만 하도록 설계된 칩에서 역전파를 직접 수행해 0부터 사전학습했다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;손실 0.99는 무슨 뜻인가?&lt;/strong&gt;&lt;br&gt;
같은 조건으로 학습한 GPU 레퍼런스와 NPU의 손실 곡선이 거의 겹친다는 뜻으로, 학습이 수치적으로 정상 작동했다는 근거다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;규모는?&lt;/strong&gt;&lt;br&gt;
46M 초소형 모델로, 모델 품질 자랑이 아니라 NPU 학습 경로의 작동 증명에 초점이 있다. 대형 모델·실데이터 확장은 다음 단계다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;모델은 어디서 보나?&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://huggingface.co/FINAL-Bench/VKORE-46M-NPU" rel="noopener noreferrer"&gt;https://huggingface.co/FINAL-Bench/VKORE-46M-NPU&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  더 읽기
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;비드래프트 기술 노트: GPU 없이 돌리는 온디바이스 모델 POCKET&lt;/li&gt;
&lt;li&gt;비드래프트 기술 노트: 생성 없이 판정하는 ZTC 구조&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>npu</category>
      <category>llm</category>
    </item>
    <item>
      <title>일본어 학습 없이 일본어판도 1위: S1MB 영어·일본어 2관왕 Darwin ZTC</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Wed, 14 Oct 2026 00:35:19 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/ilboneo-hagseub-eobsi-ilboneopando-1wi-s1mb-yeongeoilboneo-2gwanwang-darwin-ztc-p12</link>
      <guid>https://dev.to/vidraft_lab/ilboneo-hagseub-eobsi-ilboneopando-1wi-s1mb-yeongeoilboneo-2gwanwang-darwin-ztc-p12</guid>
      <description>&lt;p&gt;&lt;strong&gt;요약(TL;DR):&lt;/strong&gt; 디시전 AI 공개 리더보드 S1MB에 일본어판(japanese-v1, 27개 벤치)이 추가됐고, Darwin-27B-ZTC-v5가 Borda 84.57로 1위에 올랐다. 2위 퍼플렉시티(80.86)를 3.71점, 4위 Jev 1.13(75.43)을 크게 앞섰다. 같은 모델이 영어판도 1위(90.80, 160개 모델)라 영어·일본어 2관왕이다. 핵심은 일본어 전용 학습을 하지 않았는데도 1위라는 점이다.&lt;/p&gt;

&lt;h2&gt;
  
  
  무엇이 놀라운가: 일본어를 따로 학습하지 않았다
&lt;/h2&gt;

&lt;p&gt;Darwin ZTC는 영어 판정 엔진으로 학습됐다. 일본어 판정 학습셋을 따로 주지 않았다. 그런데도 일본어판 1위다. 좋은 판정가에게 필요한 능력, 즉 함정 문장 추론, 도덕 판단, 확률 보정이 일본어로 그대로 옮겨 갔다. 판정 능력이 한 언어의 패턴 암기가 아니라 옮겨지는 실력이라는 뜻이다. 여러 언어로 서비스하는 팀에게 바로 쓸모 있는 신호다.&lt;/p&gt;

&lt;h2&gt;
  
  
  실측 결과
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D720%26h%3D380%26c%3D%257B%2522type%2522%253A%2520%2522bar%2522%252C%2520%2522data%2522%253A%2520%257B%2522labels%2522%253A%2520%255B%2522Darwin-27B-ZTC-v5%2522%252C%2520%2522pplx-decider-27b%2522%252C%2520%2522torchcast-27b%2522%252C%2520%2522Jev%25201.13%2522%255D%252C%2520%2522datasets%2522%253A%2520%255B%257B%2522label%2522%253A%2520%2522S1MB%2520Japanese%2520Borda%2522%252C%2520%2522data%2522%253A%2520%255B84.57%252C%252080.86%252C%252080.49%252C%252075.43%255D%257D%255D%257D%252C%2520%2522options%2522%253A%2520%257B%2522title%2522%253A%2520%257B%2522display%2522%253A%2520true%252C%2520%2522text%2522%253A%2520%2522S1MB%2520Japanese%2520%2528japanese-v1%2529%253A%2520overall%2520Borda%2522%257D%252C%2520%2522legend%2522%253A%2520%257B%2522display%2522%253A%2520false%257D%257D%257D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D720%26h%3D380%26c%3D%257B%2522type%2522%253A%2520%2522bar%2522%252C%2520%2522data%2522%253A%2520%257B%2522labels%2522%253A%2520%255B%2522Darwin-27B-ZTC-v5%2522%252C%2520%2522pplx-decider-27b%2522%252C%2520%2522torchcast-27b%2522%252C%2520%2522Jev%25201.13%2522%255D%252C%2520%2522datasets%2522%253A%2520%255B%257B%2522label%2522%253A%2520%2522S1MB%2520Japanese%2520Borda%2522%252C%2520%2522data%2522%253A%2520%255B84.57%252C%252080.86%252C%252080.49%252C%252075.43%255D%257D%255D%257D%252C%2520%2522options%2522%253A%2520%257B%2522title%2522%253A%2520%257B%2522display%2522%253A%2520true%252C%2520%2522text%2522%253A%2520%2522S1MB%2520Japanese%2520%2528japanese-v1%2529%253A%2520overall%2520Borda%2522%257D%252C%2520%2522legend%2522%253A%2520%257B%2522display%2522%253A%2520false%257D%257D%257D" alt="S1MB 일본어 Borda" width="1440" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Borda 84.57 (2위 대비 +3.71), 과제 평균 60.05 (3위 대비 +1.62)&lt;/li&gt;
&lt;li&gt;27개 벤치 중 10개 1위, 16개 top3&lt;/li&gt;
&lt;li&gt;상위 3개 경쟁 모델과 일대일 모두 우세: 퍼플렉시티 15승 9패 3무, torchcast 15승 11패 1무, Jev 1.13 15승 10패 2무&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  대표 승리 벤치마크
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;JMMLU(일본 지식 시험) 88.4 공동 최고&lt;/li&gt;
&lt;li&gt;상식 도덕 판단 88.0 1위&lt;/li&gt;
&lt;li&gt;SOBACO(일본 문화 상식) 72.5 1위&lt;/li&gt;
&lt;li&gt;JaNLI(함정 문장 추론) 83.7&lt;/li&gt;
&lt;li&gt;JSICK 문장 유사도 56.6&lt;/li&gt;
&lt;li&gt;운영자 생성 수학·형식 논리 3유형 모두 1위&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  왜 2관왕이 중요한가
&lt;/h2&gt;

&lt;p&gt;응답 채점, 난이도별 라우팅, 위험 출력 차단은 서비스하는 모든 언어에서 매일 일어난다. 언어를 넘어 전이되는 판정 엔진은 다국어 확장 비용을 낮춘다. Darwin ZTC는 출력 토큰 0개, 순전파 한 번으로 판정해 지연과 비용도 낮다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문(FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;일본어 판정 데이터로 추가 학습했나?&lt;/strong&gt;&lt;br&gt;
아니다. 영어 판정 엔진으로 학습했고, 일본어 1위는 전이 결과다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;어디서 확인하나?&lt;/strong&gt;&lt;br&gt;
일본어판 &lt;a href="https://hotchpotch-s1mb-leaderboard.hf.space/?category=japanese-v1" rel="noopener noreferrer"&gt;https://hotchpotch-s1mb-leaderboard.hf.space/?category=japanese-v1&lt;/a&gt; · 영어판 ?category=english-v1&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;바로 써볼 수 있나?&lt;/strong&gt;&lt;br&gt;
Darwin-27B-ZTC-v5는 허깅페이스 트랜스포머스 판정 서비스 기능에서 별도 코드 없이 실행되도록 공개돼 있다.&lt;/p&gt;

&lt;h2&gt;
  
  
  더 읽기
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;비드래프트 기술 노트: 생성 없이 판정하는 ZTC 구조&lt;/li&gt;
&lt;li&gt;비드래프트 기술 노트: S1MB 영어판 1위의 의미&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>디시전 AI 글로벌 벤치마크 'S1MB' 1위: 퍼플렉시티·클라우드플레어·메타 제친 Darwin-27B-ZTC-v5</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Tue, 13 Oct 2026 03:28:39 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/disijeon-ai-geulrobeol-bencimakeu-s1mb-1wi-peopeulregsitikeulraudeupeulreeometa-jecin-darwin-27b-ztc-v5-49l8</link>
      <guid>https://dev.to/vidraft_lab/disijeon-ai-geulrobeol-bencimakeu-s1mb-1wi-peopeulregsitikeulraudeupeulreeometa-jecin-darwin-27b-ztc-v5-49l8</guid>
      <description>&lt;p&gt;&lt;strong&gt;요약(TL;DR):&lt;/strong&gt; 비드래프트의 판정 엔진 Darwin-27B-ZTC-v5가 허깅페이스 공개 벤치마크 S1MB에서 152개 모델 중 종합 1위에 올랐다. 137개 벤치마크 순위를 점수로 바꿔 평균한 Borda 점수는 91.16으로, 2위 퍼플렉시티(88.66)를 2.50점, 타입세이프AI의 JEV 공식 모델(14위)을 9.72점 앞섰다. 상위 5위 안에 비드래프트 모델이 두 개(1위·4위) 들어갔다.&lt;/p&gt;

&lt;h2&gt;
  
  
  S1MB가 뭐고, 왜 중요한가?
&lt;/h2&gt;

&lt;p&gt;S1MB(System One Mosaic Benchmark)는 '디시전 AI'를 겨루는 공개 리더보드다. 디시전 AI는 글을 생성하지 않고 판단만 내리는 AI다. 상황과 질문을 받으면 선택지마다 확률을 숫자로 돌려주기 때문에, 프로그램이 그 값을 바로 조건문에 넣어 쓸 수 있다. 사람이 순간적으로 내리는 '시스템 원' 판단에 해당한다. 137개 전문 벤치마크를 선택(Choice), 조건 판정(Noul), 점수 매기기(Score) 세 유형으로 묶어 평가한다.&lt;/p&gt;

&lt;h2&gt;
  
  
  누구를 제쳤나?
&lt;/h2&gt;

&lt;p&gt;함께 겨룬 이름이 1위의 무게를 말해준다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D720%26h%3D380%26c%3D%257B%2522type%2522%253A%2520%2522bar%2522%252C%2520%2522data%2522%253A%2520%257B%2522labels%2522%253A%2520%255B%2522Darwin-27B-ZTC-v5%2522%252C%2520%2522pplx-decider-27b%2522%252C%2520%2522Jev%25201.13.0%2522%252C%2520%2522OpenJev-27B%2522%255D%252C%2520%2522datasets%2522%253A%2520%255B%257B%2522label%2522%253A%2520%2522S1MB%2520Borda%2520%2528100%2529%2522%252C%2520%2522data%2522%253A%2520%255B91.16%252C%252088.66%252C%252081.44%252C%252084.12%255D%257D%255D%257D%252C%2520%2522options%2522%253A%2520%257B%2522title%2522%253A%2520%257B%2522display%2522%253A%2520true%252C%2520%2522text%2522%253A%2520%2522S1MB%2520overall%2520Borda%2520score%2522%257D%252C%2520%2522legend%2522%253A%2520%257B%2522display%2522%253A%2520false%257D%257D%257D" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fquickchart.io%2Fchart%3Fw%3D720%26h%3D380%26c%3D%257B%2522type%2522%253A%2520%2522bar%2522%252C%2520%2522data%2522%253A%2520%257B%2522labels%2522%253A%2520%255B%2522Darwin-27B-ZTC-v5%2522%252C%2520%2522pplx-decider-27b%2522%252C%2520%2522Jev%25201.13.0%2522%252C%2520%2522OpenJev-27B%2522%255D%252C%2520%2522datasets%2522%253A%2520%255B%257B%2522label%2522%253A%2520%2522S1MB%2520Borda%2520%2528100%2529%2522%252C%2520%2522data%2522%253A%2520%255B91.16%252C%252088.66%252C%252081.44%252C%252084.12%255D%257D%255D%257D%252C%2520%2522options%2522%253A%2520%257B%2522title%2522%253A%2520%257B%2522display%2522%253A%2520true%252C%2520%2522text%2522%253A%2520%2522S1MB%2520overall%2520Borda%2520score%2522%257D%252C%2520%2522legend%2522%253A%2520%257B%2522display%2522%253A%2520false%257D%257D%257D" alt="S1MB 종합 Borda 점수" width="1440" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2위: 퍼플렉시티 pplx-decider-v1.1-27b (88.66)&lt;/li&gt;
&lt;li&gt;9위: 제러드 파머의 kev-27b, 10위: 퍼플렉시티 공동창업자의 AutoJev-27B&lt;/li&gt;
&lt;li&gt;14위: 타입세이프AI 공식 모델 Jev 1.13.0&lt;/li&gt;
&lt;li&gt;17위: 클라우드플레어 Clef, 27위: 메타 Meta Encoder, 52위: 투게더AI Tev1-4B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;'디시전 AI' 붐을 일으킨 타입세이프AI는 지난 10월 약 8억7000만 달러를 유치하며 75억 달러 기업가치를 인정받았다. 그 공식 모델을 9.72점 차로 앞선 것이다.&lt;/p&gt;

&lt;h2&gt;
  
  
  JEV 공식 모델과 얼마나 차이 나나?
&lt;/h2&gt;

&lt;p&gt;S1MB 공개 데이터로 Darwin ZTC v5와 Jev 1.13.0을 직접 비교했다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;종합 Borda: 91.16 대 81.44 (+9.72)&lt;/li&gt;
&lt;li&gt;과제 평균: 70.61 대 59.59 (+11.02)&lt;/li&gt;
&lt;li&gt;점수 매기기(Score): 65.26 대 46.92 (+18.34)&lt;/li&gt;
&lt;li&gt;일대일 비교 137개 중 97개 우세, 27개 열세, 13개 동률&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;가장 큰 차이는 '점수 매기기'에서 났다. 답변 품질이나 위험도를 단계로 평가하는 유형으로, AI가 만든 답변을 대량 채점하거나 위험도를 등급으로 나누는 실제 운영 업무에 직결된다.&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 이 구조가 빠르고 싼가?
&lt;/h2&gt;

&lt;p&gt;대부분의 대규모언어모델은 답을 토큰 단위로 생성한다. Darwin ZTC는 입력과 질문을 읽어 한 번의 순전파로 확률분포를 돌려준다. 생성 토큰이 0개라 디코딩 과정이 없고, 같은 입력에 같은 결과가 재현된다. 응답 채점, 난이도별 모델 분배(라우팅), 위험 출력 차단 같은 일은 하루 수백만 번 일어나는데, 호출당 순전파 한 번으로 끝나므로 대규모 운영에서 비용 우위를 가진다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문(FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;디시전 AI와 챗봇의 차이는?&lt;/strong&gt;&lt;br&gt;
챗봇은 문장을 생성한다. 디시전 AI는 문장 대신 선택지별 확률(숫자)을 돌려줘 프로그램이 바로 쓴다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Borda 점수가 뭔가?&lt;/strong&gt;&lt;br&gt;
137개 벤치마크 각각의 순위를 점수로 환산해 평균한 종합 지표다. 특정 과제에 치우치지 않는다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;바로 써볼 수 있나?&lt;/strong&gt;&lt;br&gt;
Darwin-27B-ZTC-v5는 허깅페이스 트랜스포머스의 판정 서비스 기능에서 별도 코드 없이 실행되도록 공개돼 있다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;순위는 고정인가?&lt;/strong&gt;&lt;br&gt;
공개 리더보드는 계속 갱신된다. 수치는 2026년 10월 13일 등재 기준이다.&lt;/p&gt;

&lt;h2&gt;
  
  
  더 읽기
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;비드래프트 기술 노트: 생성 없이 판정하는 ZTC 구조&lt;/li&gt;
&lt;li&gt;비드래프트 기술 노트: GPU 없이 돌리는 온디바이스 모델 POCKET&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;리더보드: &lt;a href="https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/hotchpotch/S1MB-leaderboard&lt;/a&gt;&lt;br&gt;
모델: &lt;a href="https://huggingface.co/FINAL-Bench/Darwin-27B-ZTC-v5" rel="noopener noreferrer"&gt;https://huggingface.co/FINAL-Bench/Darwin-27B-ZTC-v5&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>공인 리더보드로 증명하는 법: 수치보다 중요한 것은 누가 채점하느냐</title>
      <dc:creator>Vidraft_lab</dc:creator>
      <pubDate>Mon, 12 Oct 2026 10:33:57 +0000</pubDate>
      <link>https://dev.to/vidraft_lab/gongin-rideobodeuro-jeungmyeonghaneun-beob-suciboda-jungyohan-geoseun-nuga-caejeomhaneunya-22e4</link>
      <guid>https://dev.to/vidraft_lab/gongin-rideobodeuro-jeungmyeonghaneun-beob-suciboda-jungyohan-geoseun-nuga-caejeomhaneunya-22e4</guid>
      <description>&lt;h2&gt;
  
  
  요약
&lt;/h2&gt;

&lt;p&gt;AI 성능 주장은 넘칩니다. 중요한 것은 수치의 크기가 아니라 &lt;strong&gt;누가, 어떤 문제로 채점했느냐&lt;/strong&gt;입니다. 이 글은 공인 리더보드 결과를 어떻게 읽어야 하는지, 자가 채점의 함정은 무엇인지, 그리고 비드래프트가 외부 기관이 운영하는 공개 리더보드에서 확인한 결과가 왜 의미 있는지를 엔지니어 관점에서 정리합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 자가 채점은 믿기 어려운가
&lt;/h2&gt;

&lt;p&gt;내가 만든 시험을 내가 풀고 내가 채점하면, 점수는 언제든 올릴 수 있습니다. 평가 문항을 학습에 넣거나, 여러 번 돌려 가장 잘 나온 것만 고르거나, 예비 경로가 조용히 답을 만들어 내면, 숫자는 오르는데 실체는 그대로입니다.&lt;/p&gt;

&lt;p&gt;그래서 믿을 수 있는 지표의 조건은 세 가지입니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;외부가 채점한다.&lt;/strong&gt; 문제와 채점을 제3의 기관이 쥐고 있어야 한다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;문제가 암기를 거부한다.&lt;/strong&gt; 검색으로 답이 안 나오는 대학원 수준 문제여야 변별력이 있다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;여러 보드에서 넓게 성립한다.&lt;/strong&gt; 한 보드의 고득점은 운일 수 있지만, 서로 다른 독립 보드에서 폭넓게 1위면 꾸미기 어렵다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  공개된 결과를 그대로 적습니다
&lt;/h2&gt;

&lt;p&gt;아래는 외부 기관이 운영하는 공개 평가에서 확인된 값입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AIME 2026, HMMT 2026년 2월&lt;/strong&gt;: 경시 수학 문제 세트에서 만점.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPQA Diamond&lt;/strong&gt;: 500B 이하 구간 93.43%. 검색으로 안 풀리게 설계된 대학원 수준 과학 문제.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;폭&lt;/strong&gt;: 허깅페이스 공인 벤치마크 11개 부문, 신약 예측 Polaris 리더보드 16개 부문에서 상위.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;핵심은 숫자의 크기가 아닙니다. &lt;strong&gt;문제를 남이 쥐고 있었고, 암기로 안 풀리며, 전혀 다른 분야에서도 같은 방법이 통했다&lt;/strong&gt;는 점입니다. 하나의 고득점은 우연일 수 있지만, 독립된 보드 여럿에 걸친 폭은 우연으로 설명되지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  수치를 읽는 실전 체크리스트
&lt;/h2&gt;

&lt;p&gt;리더보드 결과를 볼 때 다음을 확인하면 과장과 실체를 가를 수 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;학습셋과 시험셋이 겹치지 않는가. 한 문항이라도 새면 그 상승은 착시다.&lt;/li&gt;
&lt;li&gt;만점이면 먼저 시험이 너무 쉬운 건 아닌지 의심한다. 변별력부터 확인한다.&lt;/li&gt;
&lt;li&gt;양수 차이는 이긴 게 아니다. 잡음 범위 안의 상승은 상승이 아니다. 짝비교와 구간을 본다.&lt;/li&gt;
&lt;li&gt;가속 트릭을 켰다면 계수기부터 의심한다. 측정 도구가 먼저 틀릴 수 있다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 원칙은 우리 내부에서 결과를 발표하기 전에 스스로에게 먼저 적용하는 것들입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  왜 공개로 증명하는가
&lt;/h2&gt;

&lt;p&gt;비공개 데모는 통제된 조건에서 얼마든지 좋아 보입니다. 공개 리더보드는 그 통제를 외부로 넘깁니다. 같은 문제, 같은 채점 아래에서 누구나 재현을 시도할 수 있습니다. 증명의 무게는 거기서 나옵니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;만점이면 최고 아닌가요?&lt;/strong&gt; 아닙니다. 만점은 시험이 변별력을 잃었다는 신호일 수도 있습니다. 기준선부터 봅니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;한 보드 1위면 충분한가요?&lt;/strong&gt; 한 보드는 운일 수 있습니다. 서로 다른 독립 보드에서 폭넓게 1위일 때 신뢰도가 올라갑니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;수치는 어디서 왔나요?&lt;/strong&gt; 외부 기관이 운영하는 공개 평가에서 확인된 값입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;자가 채점은 전부 무의미한가요?&lt;/strong&gt; 개발 중에는 유용합니다. 다만 외부 채점을 대신할 수는 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  마치며
&lt;/h2&gt;

&lt;p&gt;좋은 주장은 "우리 수치가 높다"가 아니라 "남이 쥔 시험에서, 암기로 안 풀리는 문제를, 여러 분야에 걸쳐 통과했다"입니다. 수치보다 조건을 먼저 보십시오.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
  </channel>
</rss>
