مواد پر جائیں

مستقل کرنل میں ڈیٹا دریافت کریں

یہ گائیڈ بتاتی ہے کہ ایجنٹ سے کوئی مہنگی چیز ایک بار لوڈ کروانے کے بعد اُس سے کئی سوال کیسے پوچھیں، بجائے اس کے کہ ہر سوال پر وہی لوڈنگ دہرانی پڑے۔

eval ٹول ایک مستقل انٹرپریٹر چلاتا ہے۔ ویری ایبلز، امپورٹس اور لوڈ شدہ ڈیٹا کالز کے درمیان برقرار رہتے ہیں۔

ایک ہی بار چلنے والا python -c ہر سوال پر سیٹ اپ کی قیمت ادا کرواتا ہے۔ ڈیٹا فریم لوڈ کرنے میں سیکنڈز اور سو میگا بائٹس لگتے ہیں؛ اس کا چارٹ بنانے میں ملی سیکنڈز۔ جب ہر سوال کی قیمت یہی لوڈنگ ہو تو ایجنٹ ضرورت سے کم سوال پوچھتا ہے — اور ہر جواب متن کی صورت میں واپس آتا ہے جسے اسے دوبارہ پارس کرنا پڑتا ہے۔

data/runs.csv لوڈ کریں اور مجھے فی ایجنٹ p95 دورانیہ بتائیں۔

import pandas as pd
runs = pd.read_csv("data/runs.csv")
len(runs)

آخری ایکسپریشن ویسے ہی ظاہر ہوتا ہے جیسے نوٹ بک کرتی ہے، اس لیے len(runs) بغیر print کے قطاروں کی تعداد بتا دیتا ہے۔

پھر، ایک الگ کال میں:

runs.groupby("agent")["duration_ms"].quantile(0.95).sort_values()

runs اب بھی لوڈ ہے۔ pandas فریم repr کے بجائے ٹیبل کی صورت میں واپس آتا ہے۔

import matplotlib.pyplot as plt
runs.groupby("agent")["duration_ms"].mean().plot.bar()

فگر سیل کے بعد پکڑے جاتے ہیں اور تصاویر کی صورت میں واپس آتے ہیں، جنہیں ٹرانسکرپٹ رینڈر کرتا ہے۔ چارٹ آپ کو بھی دکھائی دیتا ہے اور ایجنٹ کو بھی۔

فگر پکڑے جانے کے بعد بند کر دیے جاتے ہیں۔ جو فگر وصول نہ کیا گیا ہو، اُسے اگلا سیل بھی دوبارہ بنائے گا اور دوبارہ بھیجے گا، چنانچہ پانچ سیلوں والا سیشن پہلا چارٹ پانچ بار خارج کرے گا۔

وہ محاورے جو آپ ویسے بھی ٹائپ کرتے ہیں

سیکشن کا عنوان “وہ محاورے جو آپ ویسے بھی ٹائپ کرتے ہیں”

یہ ایرر دینے کے بجائے سادہ کوڈ میں دوبارہ لکھ دیے جاتے ہیں:

آپ ٹائپ کرتے ہیں کیا ہوتا ہے
%pip install x pip چلاتا ہے، پھر ماڈیول کیش صاف کرتا ہے تاکہ اگلا import اسے دیکھ سکے
%cd path os.chdir
!command ایک پکڑا گیا سب پروسیس
%%bash بقیہ سیل بطور شیل اسکرپٹ
%%timeit 1000 وقت ناپے گئے رنز

%pip کا کیش انخلا ہی اصل چیز ہے: کسی زندہ انٹرپریٹر میں انسٹال کرنا اُس ماڈیول کے لیے کچھ نہیں کرتا جو پہلے ہی امپورٹ ہو چکا ہو، اس لیے اس کے بغیر جو ورژن آپ نے ابھی انسٹال کیا وہی چل نہیں رہا ہوتا۔

paths = tool("find", {"pattern": "**/*.dart", "path": "lib"})
for path in paths.splitlines()[:100]:
contents = tool("read", {"path": path})
...

tool(name, args) ایجنٹ کی اپنی ٹول رجسٹری میں دوبارہ داخل ہوتا ہے۔ اس کا مطلب ہے کہ ایک سیل سو فائلوں تک پھیل سکتا ہے، یا task کے ذریعے کام تفویض کر سکتا ہے، بغیر اس کے کہ ماڈل ہر آئٹم پر ایک ٹرن خرچ کرے۔

برج کے ذریعے کی گئی کال جب تک زیر التوا رہے، سیل کا ٹائم آؤٹ معطل رکھتی ہے۔ بجٹ غیر فعالیت ناپتا ہے، دیواری گھڑی نہیں — ایسا سیل جو سب ایجنٹس تک پھیل کر چار منٹ انتظار کرے وہ ہینگ نہیں ہوتا، اور اسے پھیلاؤ کے بیچ مار دینا پورے کرنل کی حالت ضائع کر دیتا۔

eval(code: "…", reset: true, description: "Start a clean interpreter")

انٹرپریٹر کو رد کر کے صاف سا نیا شروع کرتا ہے۔ جو کچھ لوڈ تھا سب ختم ہو جاتا ہے، اور یہی مقصود ہے۔

گفتگو کا انکلوژر ہو تو اسی میں، ورنہ ہوسٹ پر۔

غیر قابلِ اعتماد ریپو پڑھنے والے ماڈل کے چلائے ہوئے مستقل انٹرپریٹر کے لیے ہی تو صرف-انکلوژر ایگزیکیوشن موجود ہے: ایک بار چلنے والی bash کال کم از کم ختم ہو جاتی ہے، جبکہ کرنل ایسا شیل ہے جو یاد رکھتا ہے۔

یہ وہاں تک پہنچنے کے لیے انکلوژر بوٹ نہیں کرتا — وہی اصول جو رگ ٹیب کو خودکار شروع ہونے سے روکتا ہے۔ اگر آپ کرنل کو انکلوژر میں بند چاہتے ہیں تو پہلے گفتگو کا شیل کھولیں۔ دیکھیں ایجنٹ کو ٹیسٹ کے لیے مشین دیں۔

  • فی کرنل ایک وقت میں ایک سیل۔ ایک انٹرپریٹر میں دو سیل کا دوڑنا دو پروگراموں کے دو ادھورے حصے ہیں جو ایک ہی نیم اسپیس میں لپٹے ہوں۔
  • آؤٹ پٹ محدود ہے۔ پرنٹ لوپ میں پھنسے سیل کو کانٹیکسٹ ونڈو بھرنے دینے کے بجائے کاٹ دیا جاتا ہے۔
  • فی سیل چار تصاویر۔ پلاٹنگ لوپ ہر دہرائی پر ایک فگر خارج کر سکتا ہے، اور ہر تصویر اپنے ساتھ جانے والی درخواست میں ایک بڑی مقررہ لاگت ہے۔
  • کرنل رن کے ساتھ مر جاتا ہے۔ گفتگو ختم ہونے کے بعد بھی ڈیٹا فریم تھامے رکھنے والا کرنل ایک رساؤ ہے۔