Мэдээ

Python-ийн туршилтын JIT компиляторыг CPython-оос хасахаар боллоо: Их хүлээлт яагаад мухардав?

TOGTOKHTOGTOKH·2026 оны аравдугаар сарын 29·1 үзсэн·
Python-ийн туршилтын JIT компиляторыг CPython-оос хасахаар боллоо: Их хүлээлт яагаад мухардав?

Сүүлийн хоёр жилийн турш Python нийгэмлэгийн хамгийн их хүлээлт үүсгэсэн сэдвүүдийн нэг бол CPython-д анх удаа албан ёсоор нэвтэрч эхэлсэн JIT (Just-In-Time) компилятор байлаа. Python 3.13 хувилбараас эхлэн "Faster CPython" багийн бүтээсэн туршилтын copy-and-patch JIT нь Python хэлийг хэд дахин хурдан болгоно гэсэн итгэлийг хөгжүүлэгчдэд төрүүлж байв.

Гэвч энэ долоо хоногт Python-ийн Удирдах Зөвлөл (Steering Council) болон төслийн гол хөгжүүлэгчид туршилтын JIT компиляторыг CPython-ийн үндсэн салбараас (main branch) бүрмөсөн хасах шийдвэр гаргасан нь тодорхой боллоо. Хөгжүүлэгчдийн дунд халуухан хэлэлцүүлэг өрнүүлж буй энэхүү шийдвэрийн цаана ямар шалтгаан байв, энэ нь бидний өдөр тутмын хөгжүүлэлтэд хэрхэн нөлөөлөх вэ?

7-8%-ийн өсөлт ба хэт өндөр төлөөс

Python-ийн JIT компиляторыг бүрэн стандартчилах зорилготой байсан PEP 836 саналыг санаачлагчид нь албан ёсоор буцаан татжээ. Удирдах Зөвлөлөөс JIT-ийн урт хугацааны арчилгаа, тогтвортой байдал, бодит үр дүнг тодорхойлох хатуу шалгуур тавьсан бөгөөд судалгаа, бенчмаркийн үр дүн хүлээлтээс харьцангуй доогуур гарсан юм.

CPython-ийн макро бенчмаркуудын үр дүнгээс үзэхэд JIT компиляторыг идэвхжүүлснээр гүйцэтгэл ердөө 7-8 хувиар л өссөн байна.

JavaScript (V8) эсвэл Java (HotSpot)-ийн хувьд JIT нь кодын ажиллагааг хэдэн арав, зуу дахин хурдасгадаг бол Python дээр ийм үсрэлт гарсангүй. Гэтэл энэхүү 7-8 хувийн багахан хурдыг авахын тулд:

  • Хөрвүүлэгчийн архитектурт олон түвшний нарийн төвөгтэй байдал (type specialization, inline caching, reference count removal) нэмэгдсэн.
  • Санах ойн хэрэглээ мэдэгдэхүйц ихэссэн.
  • C хэл дээр бичигдсэн сангуудтай (C extensions) нийцтэй ажиллах ABI түвшний шалгуурууд улам бүр ээдрээтэй болжээ.

Өөрөөр хэлбэл, кодын суурь бүтцэд нэмэгдсэн инженерчлэлийн асар их өртөг, эрсдэл нь бодит амьдрал дээр авчирч буй өчүүхэн хурдтайгаа дүйцсэнгүй.

"Free-Threading" (No-GIL)-ийн дарамт

CPython-ийн инженерүүдийн хувьд өнөөдөр үүнээс ч том нэгэн сорилт байгаа нь PEP 703 буюу Global Interpreter Lock (GIL)-ийг халах "Free-threading" горим юм.

Олон цөмт процессор дээр Python-ийг жинхэнэ параллель ажиллуулах Free-threading төсөл нь CPython-ийн бүх сан, санах ойн менежмент, C-API-ийн бүтцийг үндсээр нь өөрчилж буй. Нэг дор системийн суурийг хөдөлгөсөн хоёр том өөрчлөлтийг (No-GIL ба JIT) хамтад нь авч явах нь автомат туршилтын матриц (test matrix)-ыг хэт данхайлгаж, нээлттэй эхийн цөөн үндсэн хөгжүүлэгчдийн хүчин чадлыг туйлдуулах эрсдэл үүсгэсэн байна.

Иймд баг хүчээ сарниулахгүйн тулд бодит мультитредингийн үр өгөөж өгөх Free-threading төслийг тогтворжуулахад хамаг анхаарлаа төвлөрүүлж, хагас дутуу, үр ашиг багатай JIT-ийг үндсэн салбараас татан буулгахаар шийджээ.

AI агентууд ба орчин үеийн системүүдийн бодит гацаа хаана байна?

Орчин үеийн программ хангамж, ялангуяа AI агент болон микросервис хөгжүүлж буй инженерүүдийн хувьд энэ шийдвэр маш том сургамж болж байна.

Өнөөгийн системүүдэд Python ихэвчлэн "холбогч цавуу" (orchestrator) байдлаар ажилладаг. Жишээлбэл:

  • Нэг AI агент хэрэглэгчийн хүсэлтэд хариулахын тулд LLM API дуудах, вектор өгөгдлийн сангаас хайлт хийх, гадаад хэрэгслүүдийг дарааллуулан ажиллуулахад нийт 8 секунд зарцуулдаг гэж бодъё.
  • Үүнээс цэвэр Python код ажиллах хугацаа ердөө 200 миллисекунд байдаг.

Хэрэв бид бүхэл бүтэн JIT компилятор нэвтрүүлж, Python-ийн CPU дээрх ажиллагааг 8% хурдасгалаа ч энэ нь ердөө 16 миллисекундийн л хэмнэлт болно. Сүлжээний саатал (I/O latency) болон архитектурын дараалсан дуудлагууд гол гацаа болж буй өнөө үед дан ганц хэлний хөрвүүлэгчийг хөөцөлдөх нь асуудлыг шийдэх гарц биш гэдгийг нийгэмлэг хүлээн зөвшөөрч эхэллээ.

Хөгжүүлэгчид цаашид Python-оо хэрхэн хурдасгах вэ?

Туршилтын JIT хасагдсан нь Python хэлний хөгжил зогссон гэсэн үг биш юм. Сүүлийн жилүүдэд Python экосистемд бодит хурдатгал авчирч буй шалгарсан аргууд тодорхой болсоор байна:

  1. Rust интеграц (PyO3): pydantic-core, ruff, polars, uv зэрэг орчин үеийн шилдэг сангууд шиг тооцооллын өндөр ачаалалтай суурь логикоо Rust хэл дээр бичиж холбох нь хэдэн арав дахин илүү бодит үр дүн өгч байна.
  2. C-extensions ба Cython: Машин сургалтын үндсэн тооцооллыг PyTorch, NumPy г.м C++/CUDA сангууд гүйцэтгэдэг уламжлал хэвээр үлдэнэ.
  3. Free-Threading (GIL-гүй горим): Python 3.14 болон түүнээс цааш хувилбаруудад GIL-гүй горим бүрэн жигдэрснээр олон урсгалт (multi-threaded) боловсруулалт жинхэнэ утгаараа хурдасна.
  4. Сүлжээ болон Архитектурын оновчлол: Асинхрон (asyncio) ажиллагааг зөв ашиглан бие биенээсээ үл хамаарах гадаад хүсэлтүүдийг зэрэгцүүлэн дуудах нь аливаа компилятороос илүү хурд авчирна.

CPython-ийн багийн энэхүү шийдвэр нь ямар нэг "маркетингийн хөөс"-ийг биш, харин системийн тогтвортой байдал, бодит үр өгөөжийг нэгдүгээрт тавьдаг инженерийн эрүүл сэтгэлгээний тод илрэл боллоо.


Эх сурвалж: LWN.net (Python's experimental JIT to be removed), CPython Steering Council, PEP 836 Post-Mortem.

Сэтгэгдэл

Ачаалж байна...