DeepMind випустив вихідний код для S6, JIT-компілятора для Python

S6-глибокий розум

S6 — це автономна бібліотека компілятора JIT для CPython

глибокий розум, відомий своїми розробками в області штучного інтелекту, нещодавно оголосив про це прийняв рішення випустити вихідний код проекту S6, який він розробив на основі компілятора JIT для мови Python.

Проект цікавий тому що розроблений як бібліотека розширення який можна інтегрувати зі стандартним CPython, який забезпечує повну сумісність із CPython і не вимагає модифікації коду інтерпретатора. Проект розроблявся з 2019 року, але, на жаль, був скорочений і більше не розробляється.

S6 був проектом, започаткованим у DeepMind у 2019 році для прискорення CPython за допомогою своєчасної компіляції («JIT»). Ці функції надаватимуться як звичайна бібліотека Python, і не потрібно буде змінювати інтерпретатор CPython. S6 мав намір зробити для Python те, що V8 зробив для Javascript (назва є даниною пам’яті V8). Робота базувалася на CPython версії 3.7. Залежно від робочого навантаження ми спостерігали прискорення до 9.5 разів у звичайних тестах.

Основною причиною, чому було вирішено опублікувати вихідний код, однією з них, як уже згадувалося, було те, що проект припинив підтримку, іншою головною причиною було те, що на основі створених розробок вони все ще можуть бути корисними для вдосконалення python .

Ми припинили внутрішню роботу над S6. Таким чином, це сховище було заархівовано, і ми не приймаємо запити на отримання або проблеми. Нижче ми надали відкритий код і надали огляд дизайну, щоб стимулювати розмови в спільноті Python і надихнути на подальшу роботу над покращенням Python.

Що стосується роботи S6, слід зазначити таке S6 для Python порівнюється з двигуном V8 для JavaScript за завданнями, які вона вирішує. Бібліотека замінює існуючий драйвер інтерпретатора байт-коду ceval.c власною реалізацією, яка використовує JIT-компіляцію для прискорення виконання.

S6 перевіряє, чи поточна функція вже скомпільована і, якщо так, виконує скомпільований код, а якщо ні, виконує функцію в режимі інтерпретації байт-коду, подібному до інтерпретатора CPython. Інтерпретація підраховує кількість виконаних операторів і викликів, пов’язаних із функцією, що обробляється.

Після досягнення певної віхи починається процес збірки, щоб прискорити код який часто запускається. Компіляція виконується на проміжному представленні strongjit, яке після оптимізації перетворюється на машинні інструкції цільової системи за допомогою бібліотеки asmjit.

Залежно від характеру навантаження за оптимальних умов S6 демонструє збільшення швидкості виконання тесту до 9,5 разів у порівнянні зі звичайним CPython.

Коли виконано 100 ітерацій із набору тестів Річардса, відбувається прискорення в 7 разів, а під час виконання тесту Raytrace, який містить багато математики, це в 3–4,5 рази швидше.

Завдання, які важко оптимізувати з S6 це проекти, які використовують C API, наприклад NumPy, а також операції, пов’язані з необхідністю перевірки типів великої кількості значень.

Низька продуктивність також спостерігається для окремих викликів функцій які споживають багато ресурсів через використання неоптимізованої реалізації інтерпретатора S6 Python (розробка не дійшла до стадії оптимізації режиму інтерпретації).

Наприклад, у тесті Unpack Sequence, який розпаковує великі набори масивів/кортежів, один виклик показує уповільнення до 5 разів, а циклічний виклик дає 0,97 від CPython.

В кінці кінців для тих, кому цікаво дізнатись більше про це, ви повинні знати, що код компілятора JIT написаний мовою C++ і наразі базується на CPython 3.7, крім того, що вихідний код уже відкритий під ліцензією Apache 2.0 і з ним можна ознайомитися за посиланням нижче.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.