پرش به محتوا
29/30فصل 29 از 30

ارزیابی LLM: از benchmarkهای عمومی تا مجموعه طلایی شما

یک agent، یک کار، ده اجرا؛ هفت موفقیت شبیه 70٪ است، تا وقتی pass^10 را حساب کنید و دقیقاً صفر شود.

در این صفحه

این یک نمایش است. agent فصل Chapter 23 — همان حلقه، دو ابزار از چهار ابزارش — به یک دایرکتوری شامل پنج فایل لاگ و پیکربندی نشان داده می‌شود و یک سؤال از آن پرسیده می‌شود.

TEXT
Q: What is the last line of errors.log about?
   turn 1  -> read_file({"path": "errors.log"})
   turn 2  -> "The last line of errors.log is:

               ERROR worker 7 timed out after 30000 ms."

درست است، و در عین حال هیچ چیزی را ثابت نمی‌کند — چون این transcript یکی از ده اجرایی است که انجام دادم، و بعد از دیدن هر ده تا آن را انتخاب کردم.

همان کار را ده بار اجرا کنید، بدون تغییر هیچ چیز جز seed نمونه‌گیری، و agent هفت بار درست جواب می‌دهد. هفتاد درصد؛ همان عددی که روی اسلاید می‌رود. حالا سؤال واقعی مشتری را بپرسید — آیا هر بار کار می‌کند؟ — و پاسخ عدد کاملاً دیگری است:

TEXT
t20  7/10 successes = 70 %   (95 % Wilson interval: 39.7 % to 89.2 %)
     pass^1  70.00 %      pass^5   8.33 %
     pass^2  46.67 %      pass^7   0.83 %
     pass^3  29.17 %      pass^8   0.00 %
     pass^4  16.67 %      pass^10  0.00 %

agent هرگز این کار را ده بار پشت سر هم حل نکرده و بر اساس این شواهد، انتظار هم نمی‌رود حل کند. آن عدد — pass^10 — عدد صادقانه است؛ تقریباً هیچ‌وقت منتشر نمی‌شود، و تا پایان این فصل می‌دانید چطور آن را حساب کنید، محاسبه‌اش چه هزینه‌ای دارد، و چرا بازه کنار 70٪ از خود 70٪ مهم‌تر است.

نمایش جزئیات

این فصل از فصل‌های قبلی چه می‌خواهد.

  • Chapter 4 برای آمار: بازه ویلسون روی یک نسبت، اینکه چرا هفده پاسخ درست از بیست هیچ چیز را تفکیک نمی‌کند، و baseline ساده به‌عنوان اولین الزام.
  • Chapter 15 برای bench: harness پنجاه‌خطی، آزمون علامت جفتی روی مواردی که دو سیستم اختلاف دارند، و این قاعده که یک prompt اندازه‌گیری می‌شود، نه بحث.
  • Chapter 23 برای چیزی که اندازه‌گیری می‌شود: حلقه، پنج راه خروج، حسابداری هزینه، و مشاهده پایانی اینکه یک harness یک agent را قابل اداره می‌کند، نه درست.

اینجا دو پنل داریم. TypeScript برای ارزیابی خودتان، چون باید کنار کدتان در continuous integration باشد. Python برای پنل دوم، چون benchmarkهای عمومی آنجا زندگی می‌کنند و یکی از اندازه‌گیری‌های پایین به logits نیاز دارد.

سه پروژه، سه ابزار اندازه‌گیری

لینک به بخش: سه پروژه، سه ابزار اندازه‌گیری

تقریباً هر بحثی درباره ارزیابی، دو نفرند که چیزهای متفاوتی را اندازه می‌گیرند. سه پروژه وجود دارد و هیچ ابزار مشترکی ندارند.

چه چیزی را ارزیابی می‌کنیدسؤالابزارمالک آن
modelآیا این model به‌طور کلی بهتر از آن یکی است؟benchmarkهای عمومی، leaderboardهاجامعه
اپلیکیشن شماآیا prompt من، retrieval من، schema من روی ورودی‌های من کار می‌کند؟مجموعه طلایی شماشما
agent شماآیا کل حلقه، با ابزارها و اثرات جانبی، با اطمینان به هدف می‌رسد؟موفقیت کار به‌علاوه pass^kشما

این سردرگمی در یک جهت پرهزینه است. leaderboard به شما می‌گوید یک model در استدلال سطح تحصیلات تکمیلی قوی است؛ نمی‌تواند بگوید آیا ticketهای پشتیبانی شما را route می‌کند یا نه. و ارزیابی اپلیکیشنی که برای هر ورودی یک پاسخ را score می‌کند اصلاً agent را نمی‌بیند، چون agent توزیعی از مسیرها دارد و یک پاسخ فقط یک نمونه از آن است. Chapter 22 آن ردیف سوم را نام‌گذاری کرد و خالی گذاشت: معیار عملکرد، همان بخشی از مشخصات agent که تیم‌ها آخر از همه می‌نویسند یا هرگز نمی‌نویسند.

ترتیب هم مهم است، و فروشنده model هم همین را می‌گوید. راهنمای agentهای OpenAI انتخاب model را به سه گام، با همین ترتیب، کاهش می‌دهد: «Set up evals to establish a performance baseline»، «Focus on meeting your accuracy target with the best models available»، «Optimize for cost and latency by replacing larger models with smaller ones where possible».1 ارزیابی اول می‌آید، چون گام‌های دو و سه بدون عدد بی‌معنی‌اند.

مجموعه طلایی، و اینکه بیست مورد واقعاً چه می‌خرد

لینک به بخش: مجموعه طلایی، و اینکه بیست مورد واقعاً چه می‌خرد

مجموعه طلایی فهرستی از ورودی‌هاست که پاسخ هرکدام نوشته شده، و یک grader که تصمیم می‌گیرد خروجی مطابق است یا نه. کسل‌کننده است، کوچک است، و تنها artefact این فصل است که مال شماست. مجموعه‌ای که اینجا ساخته شده بیست کار روی دایرکتوری پنج‌فایلی دارد — نه سه فایل Chapter 23، پس پاسخ‌ها همان پاسخ‌ها نیستند — و grader قبل از اجرای agent نوشته می‌شود:

golden.tsTS
export type Task = {
  id: string;
  prompt: string;
  answer: string;          // the fact, in words, for a human and for a judge
  must: RegExp[];          // ALL must match the final answer
  mustNot?: RegExp[];      // NONE may match
};

export const GOLDEN: Task[] = [
  { id: "t04", prompt: "Which file is the largest?", answer: "access.log",
    must: [/access\.log/i], mustNot: [/errors\.log/i, /notes\.txt/i] },       
  { id: "t12", prompt: "Which HTTP status codes appear in access.log? List all of them.",
    answer: "200, 429 and 500", must: [/200/, /429/, /500/] },                
  // ...eighteen more
];

دو ویژگی بار اصلی را می‌کشند. فهرست mustNot وجود دارد چون modelی که سه فایل را نام می‌برد و یکی‌شان درست است، پاسخ نداده. و answer هم در نثر نوشته شده هم در patternها، چون بعداً هم انسان و هم judge به آن نیاز دارند — و نوشتن یک واقعیت در دو notation، راهی است برای فهمیدن اینکه خودتان هم درباره چیستی کار با خودتان توافق نداشته‌اید.

حالا جدول تصمیم‌گیرنده. چهار سیستم نامزد، همان بیست کار، accuracy با بازه‌اش، و دو ستونی که جدول‌های صرفاً accuracy همیشه پنهان می‌کنند:

systemدرستaccuracy، 95٪ ویلسونهزینه به‌ازای هر کار حل‌شدهمیانگین latency
A — بدون ابزار، greedy2/2010.0 % [2.8, 30.1]$0.004649663 ms
B — ابزارها، prompt کوتاه5/2025.0 % [11.2, 46.9]$0.0055761,362 ms
C — ابزارها، prompt هدایت‌شده2/2010.0 % [2.8, 30.1]$0.013071930 ms
D — C، بهترین از 3 در T = 0.71/205.0 % [0.9, 23.6]$0.0735322,628 ms

قبل از برنده، بازه‌ها را بخوانید. اجراهای بازوی B از 11٪ تا 47٪ می‌روند؛ بازوی A از 3٪ تا 30٪. در بیشتر طولشان هم‌پوشانی دارند، که یافته Chapter 4 دقیقاً همان‌جایی می‌رسد که وعده داده شده بود: بیست مورد نمی‌تواند چهار سیستم را رتبه‌بندی کند. Chapter 15 این را با پرسش جفتی تیزتر کرد — در مواردی که دو بازو اختلاف دارند، تقسیم چقدر یک‌طرفه است؟ — چون دشواری مشترک مجموعه حذف می‌شود. این همه جفت‌هاست:

TEXT
A vs B  +0 / -3   p = 0.2500       B vs C  +4 / -1   p = 0.3750
A vs C  +2 / -2   p = 1.0000       B vs D  +4 / -0   p = 0.1250
A vs D  +2 / -1   p = 1.0000       C vs D  +1 / -0   p = 1.0000

هیچ‌کدام از شش مقایسه تثبیت نشده است. بهترین بازو بازوی بدون ابزار را پانزده امتیاز می‌برد، و این ادعا روی سه مورد discordant بنا شده. بیست مورد یک سازوکار را نشان می‌دهد و نمی‌تواند تأمین‌کننده انتخاب کند؛ گفتن خلافش در جلسه همان‌جایی است که model بد خریداری می‌شود.

یک چیز هست که این جدول ثابت می‌کند، و همان ستونی است که هیچ‌کس نمی‌گذارد. بازوی D به‌ازای هر کار حل‌شده سیزده برابر بازوی B هزینه دارد، چون نمونه‌گیری سه مسیر و گرفتن پاسخ modal صورت‌حساب را سه برابر می‌کند، چه accuracy را سه برابر کند چه نکند. جدول‌های accuracy که هزینه را حذف می‌کنند این trade-off را نامرئی می‌کنند.

حالا یافته‌ای که شیوه خواندن هر benchmark آینده را عوض می‌کند. همان دویست transcript را بگیرید — بیست کار، ده اجرا، بدون بازتولید حتی یک token — و سه جور score کنید:

graderدرستaccuracy، 95٪ ویلسون
exact match با پاسخ نوشته‌شده0/2000.0 % [0.0, 1.9]
پاسخ نوشته‌شده به‌صورت substring ظاهر می‌شود26/20013.0 % [9.0, 18.4]
rubric کلیدواژه‌ای بالا52/20026.0 % [20.4, 32.5]

صفر، سیزده، بیست‌وشش. سیستم تغییر نکرد. grader تغییر کرد. exact match صفر می‌دهد نه چون agent بی‌فایده است، بلکه چون هیچ پاسخ متن‌آزادی هرگز byte به byte با reference یکسان نیست: formatting را اندازه می‌گیرد و آن را capability گزارش می‌کند.

این کنجکاوی نیست، سازوکار است، و نام دارد. یک metric با hard cutoff یک کار را روی چند sub-fact به‌صورت همه‌یا‌هیچ score می‌کند، پس مرکب می‌شود. کار t12 سه status code را هم‌زمان می‌خواهد. در ده اجرا:

TEXT
per-code presence   200: 9/10    429: 6/10    500: 8/10    (mean 0.77 per fact)
all three at once   5/10

هر fact حدود سه‌چهارم مواقع درست است؛ خواستن هر سه با هم score را نصف می‌کند، و 0.773=0.4570.77^3 = 0.457 آن‌قدر به 0.50 اندازه‌گیری‌شده نزدیک است که نشان دهد افت از کجا آمده. تعمیم دهید:

accuracy هر fact ppk=1k=1k=2k=2k=3k=3k=5k=5k=10k=10
0.6060.0 %36.0 %21.6 %7.8 %0.6 %
0.8080.0 %64.0 %51.2 %32.8 %10.7 %
0.9090.0 %81.0 %72.9 %59.0 %34.9 %
0.9595.0 %90.3 %85.7 %77.4 %59.9 %

ردیف 0.90 را کنار ردیف 0.95 در k=10k = 10 بخوانید: بهبود پنج‌امتیازی در هر fact، روی conjunction به بیست‌وپنج امتیاز تبدیل می‌شود. هیچ اتفاق ناپیوسته‌ای برای model نیفتاده. یک منحنی نرم که از خلال metric همه‌یا‌هیچ خوانده شود مثل جهش دیده می‌شود — دقیقاً همان استدلالی که Schaeffer، Miranda و Koyejo درباره توانایی‌های emergent مطرح کردند و Chapter 10 به اینجا موکول کرد.2 ممیزی آن‌ها نشان داد حداکثر 5 مورد از 39 metric ترجیحی BIG-Bench اصلاً emergence نشان می‌دهند، و دو metric ناپیوسته مسئول بیش از 92٪ موارد ادعایی‌اند.

پس انضباط در یک خط: جهش در نمودار تا وقتی خلافش ثابت نشده، شاهدی درباره metric است. قبل از اینکه باور کنید capability ظاهر شده، همان اجراها را با metricی plot کنید که credit جزئی می‌دهد و ببینید پرتگاه باقی می‌ماند یا نه.

نسخه مرتبه دوم این موضوع، به گفته Kalai و همکاران، بالادست آسیب می‌زند: benchmarkهایی که درست/غلط score می‌کنند حدس‌زدن را بیش از گفتن «نمی‌دانم» پاداش می‌دهند، پس modelی که علیه آن‌ها optimize شده یاد می‌گیرد حدس بزند. راه‌حل پیشنهادی‌شان benchmark hallucination تازه نیست، بلکه «modifying the scoring of existing benchmarks that are misaligned but dominate leaderboards» است.3 مجموعه طلایی شما همین اهرم را دارد، و فقط یک خط است: تصمیم بگیرید abstention شکست حساب می‌شود یا category خودش. بیشتر مردم هرگز تصمیم نمی‌گیرند، پس بی‌صدا شکست حساب می‌شود، و سیستمی که ship می‌کنند حدس می‌زند.

pass^k، و واریانسی که هیچ‌کس منتشر نمی‌کند

لینک به بخش: pass^k، و واریانسی که هیچ‌کس منتشر نمی‌کند

تا اینجا هر کار با یک تلاش score شد. agent یک تلاش نیست. Chapter 17 نشان داد حتی در temperature صفر determinism ندارید، پس همان ورودی توزیعی از مسیرها تولید می‌کند و benchmarkی که هر کار را یک‌بار اجرا می‌کند فقط یک نمونه از آن را گزارش می‌دهد.

مشارکت τ-bench همین metric است. مقاله صریح تعریف می‌کند: «we propose a new metric – pass^k (pass hat k), defined as the chance that all k i.i.d. task trials are successful, averaged across tasks.»4 هر کار را nn بار اجرا کنید، موفقیت‌های cc را بشمارید، و برآوردگرهای unbiased چنین‌اند:

passk=Etask ⁣[(ck)(nk)]pass@k=1Etask ⁣[(nck)(nk)]\text{pass}^k = \mathbb{E}_{\text{task}}\!\left[\frac{\binom{c}{k}}{\binom{n}{k}}\right] \qquad \text{pass@}k = 1 - \mathbb{E}_{\text{task}}\!\left[\frac{\binom{n-c}{k}}{\binom{n}{k}}\right]

دومی همان pass@k آشنا از code generation است: احتمال اینکه حداقل یکی از kk تلاش موفق شود. آن‌ها را کنار هم روی همان شمارش‌های اندازه‌گیری‌شده بگذارید و در جهت‌های مخالف حرکت می‌کنند:

kkpass@k — حداقل یکیpass^k — همه آن‌ها
126.0 %26.0 %
237.0 %15.0 %
343.5 %10.5 %
551.2 %6.7 %
857.7 %5.1 %
1060.0 %5.0 %

همان اجراها، همان grader، همان بیست کار. یک ستون می‌گوید سیستم با تلاش‌های بیشتر بهتر می‌شود و ستون دیگر می‌گوید بدتر می‌شود، و هر دو درست‌اند، چون به دو سؤال متفاوت جواب می‌دهند. pass@k وقتی metric درست است که انسان خروجی را فیلتر می‌کند — code generation، draftها، brainstorming — و تلاش‌های اضافی ارزان‌اند. pass^k وقتی metric درست است که agent بدون فیلتر عمل می‌کند، و این همان معنای «agent» است. انتشار اولی در جایی که دومی مصداق دارد رایج‌ترین اغراق این حوزه است، و تیتر خود τ-bench نسخه صادقانه است: gpt-4o با حدود 61٪ pass^1 روی retail، در pass^8 به حدود 25٪ سقوط می‌کند.4

حالا نیش اعداد خودم. pass^10 روی بیست کار من 5.0٪ است: دقیقاً یک کار از بیست در هر ده اجرا حل شده. آن کار t19 است، «آیا deploy 42 موفق شد؟»، و این دو مورد از ده پاسخی هستند که rubric درست score کرده:

TEXT
run 2  "To check if 'deploy.log' succeeded in deploying 42, I will list the file
        names in the working directory using the list_files function..."
run 8  "Yes, deploy 42 has successfully deployed. Deploying was successful for 41
        as well."

اولی اصلاً جواب نمی‌دهد. دومی ادعایی اضافه می‌کند که غلط است — deploy 41 rollback شده بود. هر دو با /succe|yes/ match شدند. تنها کاری که pass^10 را بالای صفر نگه داشته artefact grader است، پس عدد واقعی صفر است، و هیچ aggregateی این را نشان نمی‌داد. نمونه‌برداری از transcriptهای پشت بهترین کارتان، جایی است که graderها می‌میرند.

و یک عدد دیگر، همان عددی که این بخش به نامش است. ده ارزیابی یکسان — همان سیستم، همان بیست کار، همان کد، هیچ چیز جز seedها عوض نشده:

TEXT
per-run correct: 5 2 5 5 8 5 8 5 4 5   ->  10 % .. 40 %,  mean 26.0 %,  sd 8.8 points

دامنه سی‌امتیازی روی سیستمی که تغییر نکرده. اگر suite خود را یک‌بار قبل از release و یک‌بار بعد از آن اجرا کنید، «بهبود» هشت‌امتیازی داخل همین spread است و آن را ship می‌کنید با این باور که شما باعثش شده‌اید. به همین دلیل بازه pooled بالا — 26.0 % [20.4, 32.5] — به‌تنهایی بیش از حد باریک است: با دویست trial هم‌بسته مثل دویست trial مستقل رفتار می‌کند. خلاصه صادقانه ارزیابی agent یک میانگین و spread روی تکرارهاست، و تقریباً هیچ‌کس دومی را منتشر نمی‌کند.

judge، و مجموعه طلایی خود judge

لینک به بخش: judge، و مجموعه طلایی خود judge

rubricها برای پاسخ‌های open-ended scale نمی‌شوند، پس حرکت استاندارد این است که یک model خروجی را grade کند. در مقیاس frontier آن‌قدر خوب کار می‌کند که default باشد، و سه failure mode نام‌دار دارد: position bias، verbosity bias و self-enhancement bias.5

قبل از اعتماد، اندازه‌اش بگیرید. همان شصت پاسخ — سه تا از ده اجرا — به سه روش label شدند. label انسانی مال من است: هر شصت را با پنج فایل باز خواندم و یک قاعده نوشته‌شده را اعمال کردم، pass اگر و فقط اگر پاسخ fact خواسته‌شده در سؤال را بیان کند و هیچ چیزی که فایل‌ها نقض می‌کنند در آن نباشد.

graderpass می‌گویدتوافق با انسانfalse passfalse fail
rubric کلیدواژه‌ای17/6050/60 = 83.3 % [72.0, 90.7]82
model به‌عنوان judge60/6011/60 = 18.3 % [10.6, 29.9]490

judge شصت بار از شصت بار گفت PASS. این agent را روی مجموعه‌ای که انسان 18٪ score می‌کند، با accuracy صددرصد گزارش می‌کرد. judgeی که قدرت تفکیک ندارد ابزار noisy نیست؛ تابع ثابت است، و تابع ثابت به بهترین و بدترین سیستم شما یک score می‌دهد.

Prompting نجاتش نداد. چهار variant، همان شصت item:

prompt judgepass می‌گویدتوافق با انسان
«Reply PASS or FAIL.»60/6018.3 %
«Reply FAIL or PASS.» — labelها جابه‌جا56/6025.0 %
به‌علاوه فهرست صریح چیزهایی که failure حساب می‌شوند55/6026.7 %
به‌علاوه یک مثال کارشده FAIL و یک مثال PASS56/6025.0 %

جابه‌جایی ترتیب دو label در instruction چهار verdict را جابه‌جا کرد. این اثر قابل اندازه‌گیری است و از نوع غلط: judge به شکل prompt پاسخ می‌دهد نه به پاسخی که جلویش است.

نمایش تمیز، pairwise است. بیست سؤال، هرکدام با یک candidate آشکارا درست و یک candidate آشکارا غلط، در هر دو ترتیب ارائه شده:

TEXT
picked the FIRST option              40/40 = 100.0 %
order-consistent (same winner both ways)   0/20 = 0.0 %   [Wilson 0.0, 16.1]
picked the CORRECT answer            20/40 = 50.0 %

چهل بار از چهل بار position A را انتخاب کرد. 50٪ روی correctness competence جزئی نیست — حساب است، چون پاسخ درست دقیقاً در نصف trialها در position A قرار دارد. consistency اینجا همان‌طور تعریف می‌شود که MT-Bench تعریف می‌کند: «the percentage of cases where a judge gives consistent results when swapping the order of two assistants»، که مقایسه را apples to apples می‌کند: GPT-4 روی این معیار 65.0٪ می‌گیرد و few-shot prompting آن را به 77.5٪ رساند.5 مال من صفر می‌گیرد.

mitigation استاندارد هم از همان مقاله است: «call a judge twice by swapping the order of two answers and only declare a win when an answer is preferred in both orders.»5 اینجا اعمالش کنید و judge از بیست جفت صفر verdict قابل استفاده تولید می‌کند — که نتیجه درست است، و بی‌نهایت بهتر از بیست verdict مطمئن.

یک نکته روش‌شناختی که از خود نتیجه بیشتر می‌ارزد. من یک آزمون verbosity هم اجرا کردم: همان پاسخ درست، یک نسخه با جمله 36کلمه‌ای padding شده که چیزی اضافه نمی‌کند. judge دقیقاً در 50٪ trialها نسخه بلندتر را ترجیح داد — که شبیه نبود verbosity bias است و اصلاً چنین نیست، چون judgeی که همیشه position A را انتخاب می‌کند روی هر pairing متوازن 50٪ می‌گیرد. نمی‌توانید bias دوم را بسنجید تا bias اول کنترل نشده باشد. جابه‌جایی positionها refinementی برای بعداً نیست؛ همان چیزی است که هر اندازه‌گیری دیگر را قابل تفسیر می‌کند.

judge به چه درد می‌خورد. پاسخ‌های open-ended بدون فرم parseable: tone، coverage، اینکه citation از جمله‌اش پشتیبانی می‌کند یا نه، اینکه refusal مناسب بوده یا نه. ارزان، سریع، و تقریباً به خوبی base model خودش.

judge چه نیست. ground truth نیست. سیستمی است با accuracy، پروفایل bias و هزینه، و قبل از اینکه هر عددش معنایی داشته باشد به مجموعه طلایی خودش از labelهای انسانی — شامل failureهای شناخته‌شده — نیاز دارد.

caveat صادقانه: این judge یک model نیم‌میلیاردپارامتری است، و هیچ‌کس نباید با چنین چیزی grade کند. نکته این نیست که judgeها بدند. نکته این است که تولید اعداد بالا هشت دقیقه هزینه داشت، و بدون آن‌ها verdict این judge درباره تصمیم shipping برابر 100٪ می‌شد.

پنل دوم: Python، و probeی برای contamination

لینک به بخش: پنل دوم: Python، و probeی برای contamination

این سومین و آخرین پنل Python اعلام‌شده دوره است، و دلیلش جایی است که اعداد عمومی از آن می‌آیند. lm-evaluation-harness شامل «over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented» است و «the backend for Hugging Face's popular Open LLM Leaderboard»؛ HELM، SWE-bench و τ-bench packageهای Python با entry pointهای Python هستند.6 اجرای model شما در برابر عدد منتشرشده یعنی اجرای کد آن‌ها، و روزی که بخواهید با عددی که کسی cite کرده مقایسه کنید، در این ecosystem هستید:

terminalBASH
lm_eval --model hf \
    --model_args pretrained=EleutherAI/gpt-j-6B \
    --tasks hellaswag \
    --device cuda:0 \
    --batch_size 8

دلیل دوم این است که یک اندازه‌گیری در این فصل از طریق HTTP ناممکن است. Contamination — لو رفتن test set به داده training — شکستی است که benchmark عمومی را بی‌صدا بی‌معنا می‌کند، و تیزترین probe برای آن به loss خود model نیاز دارد، چیزی که هیچ chat API برنمی‌گرداند. این همان cross-entropy به‌ازای هر token از Chapter 8 است که به پرسشی درباره حافظه نشانه رفته:

contamination.pyPYTHON
def nll(text: str) -> float:
    """Mean negative log-likelihood per token, in nats."""
    ids = tok(text, return_tensors="pt").input_ids.to(model.device)
    with torch.no_grad():
        out = model(ids, labels=ids)
    return float(out.loss)

ده جفت جمله: پنج جمله که از زمان وجود وب در هر crawl بوده‌اند، پنج جمله که صبح امروز برای این فصل نوشته شده‌اند، هرکدام همراه نسخه بازنویسی‌شده با همان محتوا.

setwording canonicalبازنویسی‌شدهgap
مشهور، میانگین 51.213.03+1.83
تازه، میانگین 55.025.96+0.93

model از جمله‌ای که امروز صبح نوشته شده چهار برابر بیشتر از جمله‌ای که یک میلیون بار دیده شگفت‌زده می‌شود، و بازنویسی روی جمله‌های مشهور دو برابر هزینه دارد — هزینه اضافی همان بخشی است که حفظ شده نه فهمیده. loss مطلق memorisation را با طبیعی‌بودن معمولی قاطی می‌کند، پس gap آمار بهتر است و آزمون continuation از آن هم بهتر. شش کلمه اول را بدهید:

TEXT
famous  "Permission is hereby granted, free of"
     -> "charge, to any person obtaining a copy of this software and associated
         documentation files (the "
famous  "All human beings are born free"
     -> "and equal in dignity and rights. The right to life, liberty, and security"
fresh   "All evaluation harnesses are born tiny"
     -> ", and the most common way to measure their size is by using a ruler."

سه مورد از پنج رشته مشهور از شش کلمه به بعد word-perfect ادامه یافتند؛ هیچ‌کدام از پنج مورد تازه چنین نشد. این یک model نیم‌میلیاردپارامتری است که MIT License را از بر می‌خواند. اگر benchmark شما روی وب عمومی است، فرض کنید در weights است. این همچنین استدلال کل فصل است: مجموعه طلایی‌ای که از داده خودتان نوشته‌اید و از هر repository خواندنی برای crawler دور نگه داشته‌اید، تنها test setی است که می‌توانید مطمئن باشید هرگز روی آن train نشده.

benchmarkهای عمومی واقعاً چه می‌سنجند

لینک به بخش: benchmarkهای عمومی واقعاً چه می‌سنجند

هنوز ارزش خواندن دارند، به شرطی که چیزی را بخوانید که هرکدام می‌سنجد، نه عدد واحدی که به آن چسبیده.

benchmarkچه می‌سنجدعددی از مقاله‌اش
MMLUدانش چندگزینه‌ای در 57 موضوعGPT-3 به‌طور متوسط «almost 20 percentage points» بهتر از chance بود7
HELMmetricهای بسیار × سناریوهای بسیار، استانداردشدهcoverage سناریوهای core از 17.9٪ به 96.0٪ رسید8
Chatbot Arenaترجیح pairwise انسانی crowdsourcedبیش از 240K رأی؛ رأی crowd با experts «in good agreement» بود9
SWE-benchحل issueهای واقعی GitHub، graded با testهای repo2,294 مسئله؛ بهترین model آن زمان فقط «a mere 1.96 %» حل کرد10
τ-benchاستفاده از ابزار با کاربر شبیه‌سازی‌شده و policy دامنهgpt-4o ≈ 61 % pass^1، ≈ 25 % pass^8 روی retail4
WebArenaکارهای long-horizon روی وب‌سایت‌های فعالبهترین GPT-4 agent برابر 14.41٪ در برابر 78.24٪ انسان‌ها11
OSWorldکارهای واقعی desktop و OS در applicationها369 کار؛ بهترین model 12.24٪، انسان‌ها 72.36٪12
GAIAسؤال‌هایی که برای آدم‌ها آسان و برای assistantها سخت‌اند466 سؤال؛ انسان‌ها 92٪، GPT-4 با pluginها 15٪13
AgentBenchاستدلال agent در 8 محیط متمایزشکاف بزرگ بین modelهای commercial و open14
AgentHarmاینکه آیا agent کارهای چندمرحله‌ای مخرب را اجرا می‌کند110 کار مخرب در 11 category آسیب15

جدول را بردارید نه هیچ ردیف منفردی را. benchmarkهای agentic همگی انسان‌ها را بسیار بالاتر از modelها می‌گذارند، که برعکس benchmarkهای دانشی است و بهترین خلاصه یک‌خطی از وضعیت حوزه؛ اعدادشان در چند ماه پیر می‌شود، پس با تاریخ خواندنتان cite کنید؛ و هرکدام کاری را می‌سنجند که کار شما نیست.

metricهایی که در production تصمیم می‌گیرند

لینک به بخش: metricهایی که در production تصمیم می‌گیرند

Accuracy همان metricی است که درباره‌اش بحث می‌کنید. این‌ها metricهایی‌اند که تعیین می‌کنند چیز ship می‌شود یا نه. هر چهار از همان دویست اجرای اندازه‌گیری‌شده بیرون می‌آیند.

هزینه به‌ازای کار حل‌شده، نه به‌ازای call. agent برای هر تلاش $0.001345 هزینه دارد و برای هر کاری که واقعاً حل شده $0.005172 — یعنی 3.85 برابر بیشتر، چون سه‌چهارم تلاش‌ها هیچ تولید می‌کنند. Latency هم همین رفتار را دارد: 1,213 ms برای هر تلاش، 4,667 ms برای هر کار حل‌شده. هر retry، هر re-ask، هر مسیر رهاشده در عدد دوم است و در اولی نامرئی.

تشخیصی که از accuracy بهتر است. در 123 مورد از 200 تلاش، agent بدون حتی یک tool calling پاسخ داد — حدس زد به‌جای اینکه نگاه کند. با split روی آن:

TEXT
answered without reading anything   8/123  =  6.5 %  [3.3, 12.3]
answered after reading something   44/77   = 57.1 %  [46.0, 67.6]

بازه‌ها حتی نزدیک لمس هم نمی‌شوند. این از aggregate 26٪ باارزش‌تر است، چون چیزی را که باید درست شود نام می‌برد — model در reasoning شکست نمی‌خورد، در نگاه‌کردن شکست می‌خورد — و fix در harness است نه model. یک caveat مطابق استانداردهای خود این فصل: دو گروه کارهای متفاوت‌اند، نه همان کارها به‌صورت paired، پس بخشی از gap شاید این باشد که درست روی سؤال‌هایی ابزارها را skip می‌کند که سخت می‌یابد. split تشخیصی است، نه ادعای causal.

نرخ مداخله انسانی metricی است که buyer اول از همه می‌پرسد: چه کسری از اجراها در approval، guardrail یا handoff متوقف شدند. interruptionهای typed فصل 23 آن را قابل شمارش می‌کنند، و وقتی به‌ازای نوع کار و هفته شمرده شود همان چیزی است که agentی را که شغلش را یاد می‌گیرد از agentی که بی‌صدا به queue تبدیل می‌شود جدا می‌کند.

Abandonment چیزی است که هیچ suite آفلاینی نمی‌بیند: کاربری که پاسخ را خواند، tab را بست و خودش کار را انجام داد. ارزیابی آفلاین gate است؛ ارزیابی production نمونه‌گیری پیوسته از ترافیک واقعی است، scoreشده با همان grader به‌علاوه این چهار مورد.

و قاعده‌ای به ارث رسیده از Chapter 17: هرگز روی خروجی exact assert نکنید. روی propertyها assert کنید — JSON معتبر، schema درست، tool درست call شده، عددی در tolerance، substring لازم حاضر. ستون exact-match ابتدای این فصل همان اتفاقی است که وقتی این قاعده شکسته شود رخ می‌دهد.

چه چیزی را برای شخص ثالث می‌فرستید

لینک به بخش: چه چیزی را برای شخص ثالث می‌فرستید

ارزیابی تأمین‌کننده فقط accuracy نیست، و این نیمه دوم ethics این دوره است، با heading خودش نه appendix.

bias را اندازه بگیرید، فرض نکنید. هرچه درباره رفتار model روی نام‌ها، dialectها، genderها یا nationalityها باور دارید، property قابل اندازه‌گیری pipeline شما است، و ابزار همان است که دارید: مجموعه طلایی را بگیرید، فقط attribute را تغییر دهید، paired مقایسه کنید. HELM دقیقاً به این دلیل وجود دارد که accuracy تنها جایی گزارش می‌شد که bias، toxicity، calibration و robustness هم قابل تصمیم‌گیری بودند.8 model card فروشنده نقطه شروع است، نه evidence درباره ورودی‌های شما.

Contamination سؤال تأمین‌کننده هم هست. probe بالا دلیل پرسیدن این است که عدد منتشرشده روی چه چیزی اندازه‌گیری شده، و cut داده model چه زمانی بوده.

Retention، training و residency، خوانده‌شده در 7 September 2026. این‌ها تغییر می‌کنند، پس تاریخ را کنار پاسخ ثبت کنید. صفحه policy Anthropic می‌گوید: «By default, we will not use your inputs or outputs from our commercial products (e.g. Claude for Work, Anthropic API, Claude Gov, etc.) to train our models»، با استثنای محتوایی که صراحتاً به‌عنوان feedback ارسال می‌کنید، که «for up to 5 years» ذخیره می‌شود.16 مستندات data controls OpenAI می‌گوید «data sent to the OpenAI API is not used to train or improve OpenAI models (unless you explicitly opt in to share data with us)»، retention پیش‌فرض سی‌روزه برای abuse-monitoring logs را توضیح می‌دهد، و Zero Data Retention را ارائه می‌کند که «excludes customer content from abuse monitoring logs»، به‌علاوه data residency قابل پیکربندی در چند region.17

چهار سؤال را قبل از اولین call در production مکتوب بگیرید، چون هرکدام owner متفاوتی دارد: آیا داده من برای training استفاده می‌شود؛ چه مدت نگهداری می‌شود و توسط چه کسی؛ کجا پردازش و ذخیره می‌شود؛ و اگر به‌جای provider مستقیم از reseller، gateway یا aggregator استفاده کنم چه بر سر همه این‌ها می‌آید. آخری همان‌جایی است که بیشتر غافلگیری‌ها زندگی می‌کنند، و هیچ benchmarkی به شما نمی‌گوید.

حالا ابزار را دارید: مجموعه طلایی متعلق به خودتان، بازه روی هر عدد، آزمون paired برای هر مقایسه، pass^k برای اجراهایی که به کسی نشان ندادید، judge اندازه‌گیری‌شده، و probeی برای اینکه score عمومی اصلاً معنایی دارد یا نه. ادعای پایانی Chapter 23 حالا به‌جای assertion قابل check است — harness یک agent را قابل اداره می‌کند، نه درست — و check کردنش دویست اجرا و هشت دقیقه زمان برد.

یک ویژگی agent هست که هیچ‌کدام از این‌ها اندازه نمی‌گیرد، و همان چیزی است که آدم‌ها را اخراج می‌کند.

هر کاری در مجموعه طلایی این فصل را من نوشتم، و هر فایلی که agent خواند را من نوشتم. هیچ چیز در آن دایرکتوری تلاش نمی‌کرد کاری انجام دهد. یک خط را در یکی از فایل‌هایی که به agent گفته شده بخواند عوض کنید — خطی که با instruction خطاب به هر چیزی که بعداً آن را می‌خواند تمام می‌شود — و agentی که 26٪ score گرفت با همان ابزارها، همان permissionها و همان trace تمیز از آن پیروی می‌کند، و همه اعداد این فصل دقیقاً همان‌جا می‌مانند. suite ارزیابی اندازه می‌گیرد سیستم چند وقت یک‌بار به هدف شما می‌رسد. اندازه نمی‌گیرد که دیگری چقدر آسان می‌تواند هدف خودش را جایگزین کند.

Chapter 30 همین است: prompt injection، سه‌گانه مرگبار داده خصوصی، محتوای untrusted و ارتباط خارجی، و هزینه دادن permission واقعی به agent. با مشاهده‌ای باز می‌شود که این فصل از آن طفره رفته — اینکه همان passing score با agentی سازگار است که دقیقاً همان کاری را می‌کند که attacker در فایلی نوشته که به آن گفته شده بخواند.


همه اعداد بالا روی یک ماشین تولید شد و هیچ‌کدام endpoint پولی را لمس نکرد. agent همان حلقه Chapter 23 با دو ابزار از چهار ابزارش روی دایرکتوری پنج‌فایلی است؛ model پشت port برابر Qwen/Qwen2.5-0.5B-Instruct است، از طریق server کوچکی با همان شکل chat completions endpoint مثل Chapter 23 expose شده، اما در half precision روی یک GPU مصرفی به‌جای CPU آن فصل. هزینه‌ها از نرخ‌های Chapter 16 استفاده می‌کنند — $2.00 به‌ازای هر میلیون input token و $12.00 به‌ازای هر میلیون output — اعمال‌شده روی شمارش tokenهای اندازه‌گیری‌شده. اجراهای تکراری از temperature 0.7 با seedهای ثابت استفاده می‌کنند تا کل مجموعه reproducible باشد؛ جدول چهار‌بازویی greedy است. بازه‌ها ویلسون 95٪ هستند، مقایسه‌های paired آزمون علامت exact دوطرفه روی جفت‌های discordant؛ بازه ویلسون مال Chapter 4 است و آزمون exact paired sign مال Chapter 15، هر دو بدون تغییر reuse شده‌اند. labelهای انسانی مال من‌اند، اعمال‌شده روی شصت پاسخ طبق قاعده نوشته‌شده‌ای که در متن quote شد. هر magnitude اینجا را property یک model نیم‌میلیاردپارامتری بخوانید و هر روش را transferable: model بزرگ‌تر همه اعداد را بالا می‌برد و هیچ‌کدام از ابزارها را جابه‌جا نمی‌کند.

  1. OpenAI, A practical guide to building agents (PDF)، صفحه 8، خوانده‌شده در 7 September 2026. منبع ترتیب سه‌مرحله‌ای نقل‌شده در بالا و advice همراه برای «build your agent prototype with the most capable model for every task to establish a performance baseline. From there, try swapping in smaller models to see if they still achieve acceptable results.» فصل‌های 22 و 25 صفحات definitional و orchestration آن را نقل می‌کنند.

  2. Schaeffer, R., Miranda, B. and Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023). استدلال اینکه metricهای ناپیوسته و همه‌یا‌هیچ از بهبودهای underlying نرم، جهش‌های ظاهری می‌سازند، با ممیزی BIG-Bench که در Chapter 10 cited شد. caution خودشان ارزش تکرار دارد: هیچ چیز در مقاله ادعا نمی‌کند modelهای بزرگ نمی‌توانند توانایی emergent نشان دهند.

  3. Kalai, A. T., Nachum, O., Vempala, S. S. and Zhang, E. Why Language Models Hallucinate. arXiv:2509.04664 (2025). استدلال اینکه benchmarkهای درست/غلط حدس‌زدن را نسبت به abstention پاداش می‌دهند، و remedy پیشنهادی «modifying the scoring of existing benchmarks that are misaligned but dominate leaderboards, rather than introducing additional hallucination evaluations» است. Chapter 19 آن را از سمت retrieval cite می‌کند؛ این سمت evaluation همان ادعاست.

  4. Yao, S., Shinn, N., Razavi, P. and Narasimhan, K. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. arXiv:2406.12045 (2024). منشأ pass^k، تعریف‌شده همان‌طور که بالا نقل شد، با هر دو برآوردگر کنار هم در مقاله؛ تیتر abstract این است که agentهای function-calling پیشرفته «succeed on <50 % of the tasks, and are quite inconsistent (pass^8 <25 % in retail)»، و section 1 ارقام gpt-4o یعنی ≈61 % pass^1 و ≈25 % pass^8 روی τ-retail را می‌دهد. برآوردگر pass@k که با آن contrast می‌کند از Chen, M. et al., Evaluating Large Language Models Trained on Code, arXiv:2107.03374 (2021) می‌آید. 2 3

  5. Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023). منبع سه bias نام‌دار، تعریف consistency استفاده‌شده در بالا («the percentage of cases where a judge gives consistent results when swapping the order of two assistants»)، یافته اینکه «only GPT-4 outputs consistent results in more than 60 % of cases» با 65.0٪ که با few-shot به 77.5٪ می‌رسد، و mitigation swap-and-require-agreement که verbatim نقل شد. نتیجه مثبتش هم مهم است: judgeهای GPT-4 به «an agreement rate exceeding 80 %» با ارزیابی‌های انسانی می‌رسند، «the same level of human-human agreement» — و این دلیل استفاده از judge است، و دلیل اندازه‌گیری judge خودتان. 2 3

  6. EleutherAI, Language Model Evaluation Harness, README پروژه خوانده‌شده در 7 September 2026: «over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented»، و «the backend for Hugging Face's popular Open LLM Leaderboard». invocation مربوط به lm_eval که بالا نقل شد مثال خود README است. Liang, P. et al., Holistic Evaluation of Language Models, arXiv:2211.09110 (2022)، runner استاندارد دیگر و خواندنی‌تر برای طراحی evaluation است.

  7. Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D. and Steinhardt, J. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020). 57 کار؛ ادعای abstract که بزرگ‌ترین GPT-3 model «improves over random chance by almost 20 percentage points on average» یادآور خوبی است که saturation این benchmark چقدر جدید است.

  8. Liang, P. et al. Holistic Evaluation of Language Models. arXiv:2211.09110 (2022). هفت metric — accuracy، calibration، robustness، fairness، bias، toxicity و efficiency — روی 16 سناریوی core و 30 model، با ارقام coverage نقل‌شده در بالا. دلیل خواندنش framing است: اینکه کدام‌یک از هفت مورد را report می‌کنید خودش یک انتخاب است. 2

  9. Chiang, W.-L. et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132 (2024). بیش از 240K رأی در زمان نوشتن، ترجیح pairwise crowdsourced، و ادعا که «the crowdsourced human votes are in good agreement with those of expert raters».

  10. Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. and Narasimhan, K. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? arXiv:2310.06770 (2023). 2,294 مسئله از 12 repository Python، graded با testهای خود repositoryها، با بهترین model آن زمان که «a mere 1.96 %» حل کرد. Chapter 23 از آن برای معنای دیگر واژه «harness» استفاده می‌کند.

  11. Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. arXiv:2307.13854 (2023). وب‌سایت‌های فعال در چهار دامنه، با بهترین GPT-4 agent در 14.41٪ در برابر 78.24٪ برای انسان‌ها.

  12. Xie, T. et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. arXiv:2404.07972 (2024). 369 کار روی سیستم‌عامل‌های واقعی؛ انسان‌ها بالای 72.36٪، بهترین model 12.24٪، با GUI grounding به‌عنوان gap اصلی.

  13. Mialon, G., Fourrier, C., Swift, C., Wolf, T., LeCun, Y. and Scialom, T. GAIA: A Benchmark for General AI Assistants. arXiv:2311.12983 (2023). 466 سؤال، انسان‌ها 92٪ در برابر 15٪ برای GPT-4 با pluginها — تمیزترین بیان منتشرشده از gap بین چیزی که برای انسان آسان است و چیزی که برای assistant آسان است.

  14. Liu, X. et al. AgentBench: Evaluating LLMs as Agents. arXiv:2308.03688 (2023). هشت محیط متمایز، و disparity معنادار بین modelهای commercial برتر و open-sourceهای هم‌اندازه.

  15. Andriushchenko, M. et al. AgentHarm: A Benchmark for Measuring Harmfulness of LLM Agents. arXiv:2410.09024 (2024). 110 کار agent صریحاً مخرب (440 با augmentation) در 11 category آسیب، با یافته اینکه modelهای پیشرو «surprisingly compliant with malicious agent requests without jailbreaking» هستند و templateهای jailbreak ساده universal به agentها منتقل می‌شوند و capabilityهایشان را حفظ می‌کنند. پلی است به Chapter 30: benchmark capability و benchmark harm همان سیستم را می‌سنجند و درباره آماده‌بودنش اختلاف دارند.

  16. Anthropic, Is my data used for model training?, privacy.claude.com, خوانده‌شده در 7 September 2026. verbatim بالا نقل شد، شامل استثنای feedback و پنجره ذخیره‌سازی پنج‌ساله برای feedback ارسالی.

  17. OpenAI, Your data (مستندات API data controls), developers.openai.com, خوانده‌شده در 7 September 2026. منبع statement پیش‌فرض no-training، retention سی‌روزه abuse-monitoring، توصیف Zero Data Retention و فهرست endpointهای eligible، و regionهای data residency.


تهیه‌شده توسط

David Vicente Campos

بنیان‌گذار NeuraLIA Labs و هم‌بنیان‌گذار MyRealFood

من مهندس کامپیوتر و فارغ‌التحصیل دانشگاه لئون هستم. هم‌بنیان‌گذار MyRealFood بودم، جایی که به‌عنوان مدیر ارشد فناوری اپلیکیشنی را ساختم که میلیون‌ها نفر برای سالم‌تر غذا خوردن از آن استفاده کرده‌اند، و NeuraLIA Labs را بنیان‌گذاری کردم؛ جایی که محصولات هوش مصنوعی می‌سازم. اینجا از چیزهایی می‌نویسم که در طول مسیر باید می‌فهمیدم، همان‌طور که دوست داشتم کسی برایم توضیح می‌داد.

بیشتر درباره نویسنده

منتشرشده توسط NeuraLIA Labs.

پست‌های جدید را در ایمیل خود دریافت کنید

اخبار AI، راهنماها و به‌روزرسانی‌های محصول — هر وقت چیزی ارزشمند منتشر کنیم، یک ایمیل کوتاه می‌فرستیم.

فهرست دوره

Abstract software decision engine with branching paths, probability nodes, and glowing gates.
jev12 دقیقه مطالعه

مدل هوش مصنوعی Jev برای تصمیم ساخته شده، نه نثر

Jev از TypeSafe AI توجه‌ها را جلب کرده چون هوشمندی نرم‌افزار را مسئله‌ای احتمالاتی می‌بیند: شاخه درست را انتخاب کنید، میزان اطمینان را کنار آن بگذارید، و وقتی کد به یک تصمیم نیاز دارد برای نوشتن متن به یک LLM پول ندهید.

Abstract agent runtime sorting documents, memory blocks and pointer nodes inside a bounded context frame.
context-engineering13 دقیقه مطالعه

مهندسی کانتکست برای عامل‌های AI بلندافق

عامل‌های طولانی‌اجرا فقط به‌خاطر کوچک بودن پنجره شکست نمی‌خورند. وقتی فایل‌ها، خروجی ابزارها و تاریخچهٔ کهنه وظیفه‌ای را که عامل قرار بود تمام کند کنار می‌زنند، شکست رخ می‌دهد.

آماده‌اید انتخاب مدل را به LIA بسپارید؟

با همه مدل‌های هوش مصنوعی در یک جا بسازید — همین امروز رایگان شروع کنید.