DeepMind විවෘත මූලාශ්‍ර S6, CPython සඳහා JIT සම්පාදක ක්‍රියාත්මක කිරීමක් සහිත පුස්තකාලයකි

කෘත්‍රිම බුද්ධි ක්ෂේත්‍රයේ වර්ධනයන් සඳහා ප්‍රසිද්ධ DeepMind, Python භාෂාව සඳහා JIT සම්පාදකයක් නිපදවූ S6 ව්‍යාපෘතියේ මූල කේතය විවෘත කර ඇත. ව්‍යාපෘතිය සිත්ගන්නා සුළු වන්නේ එය සාමාන්‍ය CPython සමඟ ඒකාබද්ධ වන දිගු පුස්තකාලයක් ලෙස නිර්මාණය කර ඇති නිසා, CPython සමඟ පූර්ණ අනුකූලතාවයක් සහතික කරන අතර පරිවර්තක කේතය වෙනස් කිරීම අවශ්‍ය නොවේ. මෙම ව්‍යාපෘතිය 2019 වසරේ සිට සංවර්ධනය වෙමින් පවතින නමුත් අවාසනාවන්ත ලෙස එය අත්හිටුවා ඇති අතර එය තවදුරටත් සංවර්ධනය නොවේ. නිර්මාණය කරන ලද වර්ධනයන් පයිතන් වැඩිදියුණු කිරීම සඳහා ප්‍රයෝජනවත් විය හැකි බැවින්, කේතය විවෘත මූලාශ්‍ර කිරීමට තීරණය කරන ලදී. JIT සම්පාදක කේතය C++ වලින් ලියා ඇති අතර එය CPython 3.7 මත පදනම් වේ. සහ Apache 2.0 බලපත්‍රය යටතේ විවෘත මූලාශ්‍ර ලබා ඇත.

එය විසඳිය හැකි කාර්යයන් අනුව, Python සඳහා S6 JavaScript සඳහා V8 එන්ජිම සමඟ සංසන්දනය කරයි. පුස්තකාලය ක්‍රියාත්මක කිරීම වේගවත් කිරීම සඳහා JIT සම්පාදනය භාවිතා කරන තමන්ගේම ක්‍රියාත්මක කිරීමකින් දැනට පවතින bytecode Interpreter handler ceval.c ප්‍රතිස්ථාපනය කරයි. S6 වත්මන් ශ්‍රිතය දැනටමත් සම්පාදනය කර ඇත්ද යන්න පරීක්ෂා කරයි, එසේ නම්, සම්පාදනය කරන ලද කේතය ක්‍රියාත්මක කරයි, එසේ නොමැති නම්, CPython පරිවර්තකයට සමාන බයිට්කේත අර්ථකථන ආකාරයෙන් ශ්‍රිතය ධාවනය කරයි. අර්ථ නිරූපණය අතරතුර, ක්‍රියාත්මක වන ක්‍රියාවට සම්බන්ධ ක්‍රියාත්මක කරන ලද උපදෙස් සහ ඇමතුම් ගණන ගණනය කෙරේ. නිශ්චිත සන්ධිස්ථානයකට ළඟා වූ පසු, නිතර ක්‍රියාත්මක වන කේතය වේගවත් කිරීම සඳහා සම්පාදන ක්‍රියාවලියක් ආරම්භ කෙරේ. සම්පාදනය කිරීම අතරමැදි ස්ට්‍රෝංජිට් නිරූපණයකට සිදු කරනු ලබන අතර, එය ප්‍රශස්තකරණයෙන් පසුව, asmjit පුස්තකාලය භාවිතයෙන් ඉලක්ක පද්ධතියේ යන්ත්‍ර උපදෙස් බවට පරිවර්තනය වේ.

කාර්ය භාරයේ ස්වභාවය අනුව, ප්‍රශස්ත තත්වයන් යටතේ S6 සාමාන්‍ය CPython හා සසඳන විට 9.5 ගුණයක් දක්වා පරීක්ෂණ ක්‍රියාත්මක කිරීමේ වේගය වැඩි වීමක් පෙන්නුම් කරයි. රිචඩ්ස් පරීක්ෂණ කට්ටලයේ පුනරාවර්තන 100 ක් ධාවනය කරන විට, 7x වේගයක් නිරීක්ෂණය කරනු ලබන අතර, විශාල ගණිතමය ගණනය කිරීම් ඇතුළත් වන Raytrace පරීක්ෂණය ධාවනය කරන විට, 3-4.5x වේගයක් නිරීක්ෂණය කෙරේ.

S6 භාවිතයෙන් ප්‍රශස්ත කිරීමට අපහසු කාර්යයන් අතර NumPy වැනි C API භාවිතා කරන ව්‍යාපෘති මෙන්ම විශාල අගයන් ගණනක වර්ග පරීක්ෂා කිරීමේ අවශ්‍යතාවය හා සම්බන්ධ මෙහෙයුම් ද වේ. S6 විසින්ම පයිතන් පරිවර්තකයේ ප්‍රශස්ත නොවන ක්‍රියාත්මක කිරීම (සංවර්ධනය අර්ථකථන මාදිලිය ප්‍රශස්ත කිරීමේ මට්ටමට පැමිණ නැත) හේතුවෙන් සම්පත්-දැඩි ශ්‍රිතවල තනි ඇමතුම් සඳහා අඩු කාර්ය සාධනයක් ද නිරීක්ෂණය කෙරේ. උදාහරණයක් ලෙස, Unpack Sequence පරීක්ෂණයේදී, විශාල arrays/tuples කට්ටල unpack කිරීමේදී, එක් ඇමතුමකින් 5 ගුණයක් දක්වා මන්දගාමී වීමක් සිදු වන අතර, චක්‍රීය ඇමතුමකින් කාර්ය සාධනය CPython වෙතින් 0.97 වේ.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න