مدل AlphaGenome از ژانویه در دسترس بوده و هر پژوهشگری میتونسته باهاش کار کنه. پس در ۸ سپتامبر چی عوض شد؟ توی خود مدل هیچی. چیزی که عوض شد شکل رسیدن به جوابه، و همین یک تغییر ساده اون چیزیه که این خبر رو خواندنی میکنه.
کاری که AlphaGenome میکنه اینه که یک قطعه DNA رو با نسخهی دستکاریشدهی همون قطعه مقایسه میکنه و پیشبینی میکنه که ژنهای اطراف چه واکنشی نشون میدن. تا همین چند روز پیش باید خودت انتخاب میکردی کدوم تغییرها رو میخوای بسنجی، کد مینوشتی، و یک مدل کند و پرمصرف رو روی سختافزار خودت اجرا میکردی. حالا DeepMind این کار رو یک بار برای همهی ۹ میلیارد تغییر تکحرفی ممکن انجام داده و جوابها رو در یک مخزن عمومی گذاشته که هر کسی بدون کد نوشتن میتونه توش جستوجو کنه.
چرا اصلا کسی میره سراغ حساب کردن همهی حالتها
حساب کردن همهی حالتهای ممکن معمولا کار عبثیه، چون بیشتر اون حالتها هیچوقت پیش نمیان. ولی در ژنتیک انسان یک استدلال هست که این کار رو موجه میکنه و مقالهی خود اطلس هم همین رو در مقدمهاش آورده؛ مدلهای جمعیتی میگن هر تغییری که با زنده موندن ناسازگار نباشه، همین حالا در جایی از جمعیت جهان وجود داره. یعنی این ۹ میلیارد ردیف فهرست «اگر»ها نیست؛ فهرست چیزهاییه که آدمهای واقعی همین امروز در بدنشون دارن. اگه بالاخره مجبوری همهشون رو یک روزی بسنجی، میتونی همین حالا یک بار همه رو بسنجی.
مسئله هم دقیقا همونجاییه که سختترینه. حدود ۹۸ درصد تفاوت ژنتیکی میان آدمها در بخشهایی از DNA میافته که خودشون هیچ پروتئینی نمیسازن. این بخشها بیکار نیستن و تعیین میکنن کدوم ژن، در کدوم بافت، کی و چقدر روشن بشه. کار ما با یک ژن معیوب راحتتره چون میشه دید پروتئینش خراب در اومده؛ ولی وقتی تغییر در یک قطعهی تنظیمکننده افتاده، اثرش فقط در بعضی سلولها و بعضی شرایط دیده میشه. یکی از ژنومشناسهای دانشگاه بریتیش کلمبیا، کارل دو بوئر، همین رو صریح میگه که فهمیدن اثر تغییرهای DNA بر این تنظیم، پایهی فهم بیشتر بیماریهاست.
عددها رو دنبال کن؛ اون یک پتابایت از کجا میاد
ژنوم انسان حدود سه میلیارد حرف داره. در هر جایگاه، اون حرف میتونه به سه حرف دیگه تبدیل بشه. سه میلیارد ضرب در سه میشه ۹ میلیارد، و همین و بس. عدد بزرگیه ولی از آسمون نیفتاده و هیچ ابهامی هم نداره.
حجم داده اما جای جالبتریه. برای هر تغییر، مدل یک عدد تولید نمیکنه؛ بهطور میانگین حدود ۲۷ هزار عدد تولید میکنه، چون همون تکحرف باید در صدها نمونهی سلولی و بافتی جداگانه سنجیده بشه. حالا خودت حساب کن. اگه هر عدد رو چهار بایت بگیری، هر تغییر حدود ۱۰۸ کیلوبایت جا میگیره، و ۱۰۸ کیلوبایت ضرب در ۹ میلیارد میشه نزدیک یک پتابایت؛ یعنی دقیقا همون رقمی که در گزارش خبری اومده. پس اون یک پتابایت یک عدد تبلیغاتی نیست و مستقیم از یک تصمیم بیرون میآد؛ اینکه هر جهش رو در چند تا بافت نگاه کنیم.
رسیدن به این حجم هم رایگان نبود. سرپرست بخش ژنومیک DeepMind، ژیگا آوسک، میگه اول کار این پروژه از نظر محاسباتی ناممکن به نظر میرسید و برآوردها میگفتن باید سرعت محاسبه رو حدود ۸۰ برابر کنن تا کار در زمان معقول تموم بشه. راهش سه چیز بود؛ آموزش یک مدل کوچکتر که کار مدل بزرگ رو تقلید کنه، بهینه کردن کدی که مستقیم روی کارت گرافیک اجرا میشه، و حذف حسابهایی که بیخودی تکرار میشدن.
این تصمیم زیستی نیست، مهندسیه
هر کسی که سامانهی واقعی ساخته باشه این الگو رو میشناسه. وقتی یک تابع گرون داری، ورودیهاش شمردنیه، و آدمهای زیادی مدام همون چند تا ورودی رو دوباره و دوباره میفرستن، جوابها رو یک بار حساب میکنی و در یک جدول میذاری. این دقیقا همون چیزیه که در نرمافزار بهش میگیم کش (cache)، با این تفاوت که این یکی از قبل پر شده و هیچوقت خطا نمیده، چون همهی ورودیهای ممکن توش هست. دو بوئر هم که خودش چارچوبی برای مقایسهی همین دست مدلها ساخته، شرط سوم رو با همین لحن میگه؛ اطلس به درد کسانی میخوره که سختافزار تازه ندارن، یا فقط جلوی این رو میگیره که دهها گروه یک شبیهسازی واحد رو تکرار کنن.
من این هزینه رو در عمل دیدهام. وقتی خط لولهای میسازی که کل ژنوم یک نفر رو بخونه و ازش گزارش در بیاره، خوندن ژنوم دیگه گرونترین قسمت نیست؛ گرونترین قسمت اینه که هر تغییری که پیدا شد رو معنا کنی. جدول آماده، همین قسمت رو از یک محاسبهی سنگین تبدیل میکنه به یک جستوجو، و این تفاوت، کل معماری اون خط لوله رو عوض میکنه.
۲۷ هزار عدد چطوری میشه یک عدد
۲۷ هزار عدد برای یک جهش، به درد هیچ پزشک و هیچ آزمایشگاهی نمیخوره. برای همین یک عدد واحد ساختن به اسم AVI که بالای هر ردیف میشینه و میگه این تغییر چقدر احتمال داره مهم باشه.
روش ساختنش مهمتر از خود عدده. اون ۲۷ هزار عدد اول به ۱۰ ویژگی خلاصه میشه، هر ویژگی برای یک نوع آزمایش زیستی. بعد ۴ ویژگی مربوط به پروتئین و ۲ ویژگی از مقایسهی ژنوم انسان با صدها گونهی دیگه و ۲ نشانگر ساده هم بهش اضافه میشه. جمع کل میشه ۱۸ ویژگی، و یک شبکهی عصبی از روی همین ۱۸ تا عدد نهایی رو در میاره.
چرا فقط ۱۸ تا؟ چون خودشون در مقاله میگن عمدا کم نگهش داشتن تا بشه سهم هر ویژگی رو تمیز حساب کرد. سهم اون ۱۸ ویژگی جمع میشه و دقیقا همون عدد خام رو میسازه، پس هر عددی که در اطلس میبینی رو میشه دوباره باز کرد و پرسید کدوم بخشش این عدد رو بالا برده. کسی که یک عدد واحد منتشر میکنه و در کنارش راه باز کردن اون عدد رو هم میده، خطر کارش رو میدونسته و براش کاری هم کرده.
اون عدد دقیقا چی رو اندازه میگیره
حالا مهمترین سوال این نوشته. اون عدد رو با چه چیزی آموزش دادن؟
AVI طوری آموزش دیده که تغییرهایی رو که در بیش از یکدهم درصد جمعیت دیده میشن، از تغییرهایی که کمتر از این دیده میشن جدا کنه. یعنی معیار «مهم بودن» در عمل شده «کمیاب بودن». استدلال پشتش هم قدیمی و معتبره؛ اگه تغییری واقعا زیانبار باشه، انتخاب طبیعی نمیذاره در جمعیت پخش بشه، پس کمیاب میمونه.
ولی این یک جانشینه، نه خود آن چیزی که میخوایم بدونیم. اون عدد داره به این جواب میده که «این تغییر چقدر شبیه تغییرهای کمیابه»، نه به اینکه «این تغییر تو رو بیمار میکنه». بیشتر وقتها این دو تا با هم میخونن و کار میکنه؛ AVI در آزمونهای استاندارد بهترین نتیجهی موجود رو گرفته، به حل یک پروندهی واقعی از یک بیماری صرعی نادر در کودکان کمک کرده، و توان آماری پیدا کردن تغییرهای کمیاب اثرگذار در سطح جمعیت رو بالا برده. ولی جایی که این دو از هم جدا میشن، عدد بیسروصدا اشتباه میکنه. هر تغییری که به هر دلیلی در جمعیت پخش شده باشه، طبق همون تعریف در سمت بیخطر میشینه، چون برچسب آموزش از فراوانی میآد نه از پروندهی بیمار. دو بوئر همین رو با احتیاط میگه که این عدد کاربرد روشنی داره ولی بهراحتی بد فهمیده میشه، چون با یک سامانهی پیچیده طرفیم که اجزای متحرک زیادی داره.
دو تا دیوار که جدول ازشون رد نمیشه
مدل موقع قضاوت دربارهی یک جهش، حدود یک میلیون حرف اطرافش رو نگاه میکنه. این پنجره از هر مدل قبلی بازتره، ولی بینهایت نیست، و قطعههایی در ژنوم هست که از فاصلهی بسیار دورتر یک ژن رو تنظیم میکنن و بیرون این پنجره میافتن.
حالا این محدودیت رو کنار کامل بودن جدول بذار، چون ترکیب این دو تا خطرناکه. جدول برای هر ۹ میلیارد تغییر یک عدد داره و هیچ ردیفی خالی نیست. پس تغییری هم که سازوکار واقعیش بیرون اون پنجره افتاده عدد میگیره، و عددش پایین در میاد. عدد پایین اینجا یعنی «در این پنجره چیزی پیدا نشد»، نه «چیزی نیست». وقتی فهرستی کامل باشه، سکوتش شبیه شهادت دادن به نظر میرسه، و این همون جاییه که آدمها گول میخورن.
دیوار دوم سادهتره و ریاضیش رو خودت میتونی چک کنی. شمردنی بودن، ویژگی سوال ماست نه ویژگی مدل. ۹ میلیارد شمردنیه چون فقط یک حرف رو عوض میکنیم. اگه بخوای دو حرف رو با هم عوض کنی، تعداد جفتجایگاهها از چهار میلیارد میلیارد رد میشه و با احتساب حالتهای حرفی هر جفت به عددی حدود ۴ در ۱۰ به توان ۱۹ میرسی. هیچ پتابایتی این رو در خودش جا نمیده و هیچ ۸۰ برابر شدنی نجاتش نمیده. و بد ماجرا اینجاست که بسیاری از بیماریها حاصل یک تغییر تنها نیستن و چند تغییر با هم اونها رو میسازن. پس محوری که جدول در اون کامله، دقیقا همون محوریه که زیستشناسی در اون سادهترینه.
چیزی که DeepMind واقعا تحویل میده
الگو رو نگاه کن. در سال ۲۰۲۰ AlphaFold ساختار سهبعدی پروتئینها رو پیشبینی کرد و نتیجهاش در یک پایگاه عمومی نشست. در ۲۰۲۳، AlphaMissense برای ۷۱ میلیون تغییر پروتئینی گفت کدوم بیخطره و کدوم بیماریزا، و باز هم نتیجه در یک پایگاه عمومی نشست. حالا نوبت ۹ میلیارد ردیف رسیده، بهعلاوهی ۲۶۰۱ الگوی کوتاه که روی DNA تعیین میکنن کدوم پروتئین تنظیمکننده کجا بچسبه، و ۲۵۳ میلیارد جایی که این الگوها در ژنوم تکرار شدهن.
پس چیزی که واقعا دست جامعهی علمی رو میگیره مدل نیست؛ جدولیه که مدل تولید کرده. مدل کارخونهست و جدول محصول. و این تفاوت یک عارضه داره که کسی زیاد دربارهاش حرف نمیزنه. جدولی که به یک منبع عمومی تبدیل بشه، در مقالهها ارجاع میگیره، در خط لولهها میشینه، و سالها بعد هم که مدل بهتری اومده و همون تغییر رو جور دیگهای میسنجه، ارجاعها سر جاشون میمونن. مدل شمارهی نسخه داره، جدولی که ازش بیرون اومده هم داره؛ فقط این یکی رو کسی نمیخونه.