Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems

The study substantiates the relevance of solving the issue of ensuring the quality of descriptions for changes made in source code files within version control systems. Machine learning methods, particularly neural networks of various architectures, are employed for comment filtering. Neural network...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Datum:2025
Hauptverfasser: Semonov, B.O., Pogorilyy, S.D.
Format: Artikel
Sprache:Ukrainian
Veröffentlicht: Інститут програмних систем НАН України 2025
Schlagworte:
Online Zugang:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/762
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
Назва журналу:Problems in programming

Institution

Problems in programming
id pp_isofts_kiev_ua-article-762
record_format ojs
resource_txt_mv ppisoftskievua/22/32ad3008cec22e0e9e5094b153478322.pdf
spelling pp_isofts_kiev_ua-article-7622025-07-09T12:38:12Z Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems Дослідження застосування технологій GPGPU та TPU для методу забезпечення якості коментарів у системах контролю версій Semonov, B.O. Pogorilyy, S.D. commit message; GPGPU; repository; RNN; TPU; version control system UDC 004.91 GPGPU; RNN; TPU; опис внесених змін; репозиторій; система контролю версій УДК 004.91 The study substantiates the relevance of solving the issue of ensuring the quality of descriptions for changes made in source code files within version control systems. Machine learning methods, particularly neural networks of various architectures, are employed for comment filtering. Neural networks are deemed appropriate due to the necessity of identifying descriptions that accurately reflect the purpose of the changes made. Recurrent neural networks were developed and trained on a dataset of change descriptions obtained through the GitHub REST API. To enhance training performance, various hardware and software platforms such as CPU, TPU, and GPGPU were utilized. The accuracy of the models was analyzed using metrics like Accuracy and the harmonic mean (F1-score).Prombles in programming 2025; 1: 24-37 У роботі обґрунтовано актуальність вирішення задачі забезпечення якості описів до внесених змін у ви хідних текстах програм для систем контролю версій. Для здійснення фільтрації коментарів використо вуються методи машинного навчання: нейронні мережі різної архітектури. Доцільним є використання нейронних мереж у зв’язку з необхідністю пошуку описів до внесених змін, які відображають їхню мету. Створено рекурентні нейронні мережі та здійснено їх навчання на множині описів до внесених змін, отриманих за допомогою спеціального програмного інтерфейсу GitHub REST API. Для покращення шви дкодії навчання застосовано різні програмно-апаратні платформи на кшталт CPU, TPU та GPGPU. Про ведено аналіз точності моделей за допомогою метрик: точності (Accuracy) та середнього гармонійного (F1-score).Prombles in programming 2025; 1: 24-37 Інститут програмних систем НАН України 2025-06-21 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/762 10.15407/pp2025.01.024 PROBLEMS IN PROGRAMMING; No 1 (2025); 24-37 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 1 (2025); 24-37 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 1 (2025); 24-37 1727-4907 10.15407/pp2025.01 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/762/814 Copyright (c) 2025 PROBLEMS IN PROGRAMMING
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2025-07-09T12:38:12Z
collection OJS
language Ukrainian
topic commit message
GPGPU
repository
RNN
TPU
version control system
UDC 004.91
spellingShingle commit message
GPGPU
repository
RNN
TPU
version control system
UDC 004.91
Semonov, B.O.
Pogorilyy, S.D.
Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
topic_facet commit message
GPGPU
repository
RNN
TPU
version control system
UDC 004.91
GPGPU
RNN
TPU
опис внесених змін
репозиторій
система контролю версій
УДК 004.91
format Article
author Semonov, B.O.
Pogorilyy, S.D.
author_facet Semonov, B.O.
Pogorilyy, S.D.
author_sort Semonov, B.O.
title Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
title_short Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
title_full Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
title_fullStr Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
title_full_unstemmed Research of the application of GPGPU and TPU technologies for ensuring comment quality in version control systems
title_sort research of the application of gpgpu and tpu technologies for ensuring comment quality in version control systems
title_alt Дослідження застосування технологій GPGPU та TPU для методу забезпечення якості коментарів у системах контролю версій
description The study substantiates the relevance of solving the issue of ensuring the quality of descriptions for changes made in source code files within version control systems. Machine learning methods, particularly neural networks of various architectures, are employed for comment filtering. Neural networks are deemed appropriate due to the necessity of identifying descriptions that accurately reflect the purpose of the changes made. Recurrent neural networks were developed and trained on a dataset of change descriptions obtained through the GitHub REST API. To enhance training performance, various hardware and software platforms such as CPU, TPU, and GPGPU were utilized. The accuracy of the models was analyzed using metrics like Accuracy and the harmonic mean (F1-score).Prombles in programming 2025; 1: 24-37
publisher Інститут програмних систем НАН України
publishDate 2025
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/762
work_keys_str_mv AT semonovbo researchoftheapplicationofgpgpuandtputechnologiesforensuringcommentqualityinversioncontrolsystems
AT pogorilyysd researchoftheapplicationofgpgpuandtputechnologiesforensuringcommentqualityinversioncontrolsystems
AT semonovbo doslídžennâzastosuvannâtehnologíjgpgputatpudlâmetoduzabezpečennââkostíkomentarívusistemahkontrolûversíj
AT pogorilyysd doslídžennâzastosuvannâtehnologíjgpgputatpudlâmetoduzabezpečennââkostíkomentarívusistemahkontrolûversíj
first_indexed 2025-07-17T09:43:17Z
last_indexed 2025-07-17T09:43:17Z
_version_ 1838499866210205696
fulltext Програмна інженерія виробництва програмних продуктів 24 © B.O. Semonov, S.D. Pogorilyy, 2025 ISSN 1727-4907. Проблеми програмування. 2025. №1 УДК 004.91 http://doi.org/10.15407/pp2025.01.024 Б.О. Семьонов, С.Д. Погорілий ДОСЛІДЖЕННЯ ЗАСТОСУВАННЯ ТЕХНОЛОГІЙ GPGPU ТА TPU ДЛЯ МЕТОДУ ЗАБЕЗПЕЧЕННЯ ЯКОСТІ КОМЕНТАРІВ У СИСТЕМАХ КОНТРОЛЮ ВЕРСІЙ У роботі обґрунтовано актуальність вирішення задачі забезпечення якості описів до внесених змін у ви- хідних текстах програм для систем контролю версій. Для здійснення фільтрації коментарів використо- вуються методи машинного навчання: нейронні мережі різної архітектури. Доцільним є використання нейронних мереж у зв’язку з необхідністю пошуку описів до внесених змін, які відображають їхню мету. Створено рекурентні нейронні мережі та здійснено їх навчання на множині описів до внесених змін, отриманих за допомогою спеціального програмного інтерфейсу GitHub REST API. Для покращення шви- дкодії навчання застосовано різні програмно-апаратні платформи на кшталт CPU, TPU та GPGPU. Про- ведено аналіз точності моделей за допомогою метрик: точності (Accuracy) та середнього гармонійного (F1-score). Ключові слова: GPGPU, RNN, TPU, опис внесених змін, репозиторій, система контролю версій. B.O. Semonov, S.D. Pogorilyy RESEARCH OF THE APPLICATION OF GPGPU AND TPU TECHNOLOGIES FOR ENSURING COMMENT QUALITY IN VERSION CONTROL SYSTEMS The study substantiates the relevance of solving the issue of ensuring the quality of descriptions for changes made in source code files within version control systems. Machine learning methods, particularly neural networks of various architectures, are employed for comment filtering. Neural networks are deemed appropriate due to the necessity of identifying descriptions that accurately reflect the purpose of the changes made. Recurrent neural networks were developed and trained on a dataset of change descriptions obtained through the GitHub REST API. To enhance training performance, various hardware and software platforms such as CPU, TPU, and GPGPU were utilized. The accuracy of the models was analyzed using metrics like Accuracy and the harmonic mean (F1-score). Keywords: commit message, GPGPU, repository, RNN, TPU, version control system. Вступ У сучасному цифровому світі, де ро- звиток програмного забезпечення стає не- від'ємною частиною багатьох галузей, сис- теми контролю версій є ключовим інстру- ментом для ефективної розробки та управ- ління вихідними текстами програм. Пос- тійні зміни ринку вимагають від розробни- ків не лише швидкості та якості, а й систе- матизованого та надійного підходу до керу- вання версіями застосунків [7]. Завдяки системам контролю версій розробники можуть ефективно працювати над проєктами, вносити зміни та експери- ментувати з новими функціями, водночас маючи можливість у разі необхідності по- вертатися до попередніх версій. Це дозво- ляє уникнути втрат даних, забезпечує стабі- льність роботи системи та сприяє кращій співпраці в команді розробників. Опис внесених змін у системі конт- ролю версій є важливим елементом для ро- зуміння, відстеження та збереження історії змін у кодовій базі. Кожне повідомлення про внесені зміни є відображенням конкре- тної зміни, внесеної розробником. Деталі- зований та розгорнутий опис внесених змін допомагає не лише поточним, а й майбут- нім членам команди легко розібратися в тому, як і чому змінено вихідний текст про- грами [3]. Зрештою деталізовані описи внесе- них змін роблять проєкт більш документо- ваним та полегшують процеси технічного супроводу, допомагають відслідковувати Програмна інженерія виробництва програмних продуктів 25 етапи його розвитку, логіку ухилення рі- шень та, кінець кінцем, роблять проєкт про- зорішим. Створення методу забезпечення яко- сті коментарів до внесених змін у вихідних текстах програм для систем контролю вер- сій є актуальним у зв'язку із зростанням об- сягу проєктів та ускладненням структури кодової бази. Враховуючи те, що до сучасних проєктів можуть залучатися розробники із різним досвідом та стилями програмування, фільтр описів внесених змін, який оцінюва- тиме зміст та контекст опису, буде сприяти розумінню іншими членами команди внесе- них у вихідний текст програм змін та буде спрощувати технічну підтримку. Отже, опис внесених змін – це пові- домлення, зміст якого відповідає загальним правилам написання повідомлень про вне- сені зміни, є лаконічним, описує характер змін, їхні ефект та причину. 1. Правила щодо оформлення повідом- лення про внесені зміни [6]: а. опис повинен мати заголовок і може мати тіло. Ці частини ма- ють бути розділені порожнім ря- дком; б. заголовок не має бути довгим, не більше 50-70 символів; в. дієслова у заголовку повинні бути доконаного виду. 2. Правила щодо подання інформації в повідомленні про внесені зміни: а. має бути описана причина зроб- лених змін; б. який ефект має це повідомлення про внесені зміни; в. якщо внесені зміни виправляють якусь проблему, то необхідно її вказати; г. подання інформації має бути та- ким, щоб фахівець, який не розу- міється на проблемі чи структурі коду, збагнув, що було зроблено і який вплив це має на проєкт (програму) Приклади описів на- ведено в Таблиці 1. Постановка задачі Всі, наведені у попередньому розділі правила написання повідомлень про внесені зміни, можна опрацювати засобами будь- якої мови програмування. Проте для пра- вила 2.г потрібно використовувати саме ма- шинне навчання, бо формальних правил для визначення, що було зроблено і чому, не іс- нує – для цього потрібне «людське» розу- міння контексту та змісту повідомлення про внесені зміни. Звідси випливає постановка задачі: створити метод забезпечення якості повідомлень про внесені зміни вихідних те- кстів програм у системах контролю версій, який аналізуватиме опис внесених розроб- ником змін у вихідний текст програми та по- вертатиме мітку, чи відповідає цей коментар до внесених змін на питання «що було зроб- лено і чому?», тобто «так» чи «ні». Таблиця 1 Повідомлення про внесені зміни, які відповідають правилу 2.г № Приклад опису 1 Add array identifiers for generating routes. This allows for resources with multi-column keys to generate the related routes by only passing an instance of the object in question. 2 Increases the select timeout in start reactor() endless loop. This small patch greatly reduces CPU time (for instance for backgroundrb). 3 Add a ’variance’ method and a ’sum’ method to the Array class to stay DRY. 4 Fixed autocomplete with scrollbar. IE has problems when the ul has a scrollbar and the user clicks there. The activate event is thrown and the list disappears. Програмна інженерія виробництва програмних продуктів 26 Формалізація задачі фільтра. Нехай X – множина описів внесених змін (генера- льна сукупність), кожне із цих повідомлень про внесені зміни описується m-вимірним вектором слів: 1 2 mx ={x ,x ,…,x },x ,X (1) де m – розмірність вектору слів. Y – множина можливих відгуків (мі- ток) у вигляді M-вимірного вектору: 1 My ={y ,…,y }, y ,Y (2) де M = 2 – це кількість відгуків (кла- сів), які потрібно отримати: перший відгук – чи задовольняє поточне повідомлення ви- моги, другий – не задовольняє. Звідси ви- пливає, що шуканий фільтр – це задача бі- нарної класифікації: Y = {0, 1}. Отже, модель фільтра повідомлень до внесених змін можна описати таким сю- р'єктивним, але не ін'єктивним, відобра- женням: f : →X Y (3) Збір та підготовка навчальних корпусів повідомлень Для збору даних для навчання було використано один із найбільших веб-серві- сів для розміщення ІТ-проєктів та спільної розробки програмного забезпечення GitHub, в основі якого лежить популярна система контролю версій Git. Цей веб-сер- віс має спеціальний програмний інтерфейс для застосунків, який називається GitHub REST API [4]. Через те, що дослідження пов’язане з перевіркою змісту повідомлень (commit messages) про внесені зміни (differences, скорочено «diffs») для систем контролю версій, знадобилися такі інтер- фейси: 1. отримання переліку репозиторіїв (проєктів); 2. отримання повідомлень до внесених змін для кожного репозиторію. Наведені вище інтерфейси мають тип GET http-запиту і повинні формувати та передавати на сервер відповідні GET-пара- метри та http-заголовки. У свою чергу від- повідь від сервісів надходить у текстовому форматі структурованих даних JSON. Вказані у Таблиці 2 http-запити ма- ють однакові набори http-заголовків, а саме: 1. 'Accept': 'application/vnd.github+json' – тип відповіді від програмного ін- терфейсу GitHub REST API; 2. 'Authorization': 'Bearer [token]' – авто- ризація користувача API, де token – спеціальний набір сим- волів, який можна згенерувати в налаштуваннях користувача веб- сервісу GitHub; 3. 'X-GitHub-Api-Version': '2022-11-28' – версія програмного інтерфейсу GitHub REST API. Після завантаження було виконано ручне маркування цих даних, тобто відне- сення кожного повідомлення до відповід- ного класу згідно з правилом 2.г. Такий процес довготривалий, тому в цій роботі використовується 8 тис. повідомлень з 1 млн. завантажених. Аналіз промаркованих описів внесе- них змін показав, що дані є нерівномір- ними. В отриманій вибірці описи, які не ві- дповідають правилу 2.г, кількісно перева- жають повідомлення, які відповідають ви- могам. На Рис. 1 зображено розподіл навча- льних корпусів повідомлень про внесені зміни. Такий розподіл впливає на точність навчання нейронних моделей, тому наступ- ний методи було використано задля боро- тьби з вказаною проблемою: зсув порогу (threshold moving) з вибором коефіцієнту 0.57. Перед подачею повідомлень про внесені зміни на вхід досліджуваних ней- ронних мереж було виконано [11]: 1. нормалізацію (стандартизацію) по- відомлень, а саме: приведення літер тексту у малі; 2. токенізацію повідомлень на навча- льній вибірці; 3. векторизацію повідомлень. Під час створення об'єкту векторизації пові- домлень було зафіксовано довжину вихідної послідовності токенів, тому що форма вхідного для нейрон- ної мережі тензору має бути фіксо- ваною. А також обмежено розмір словника, чим нехтують найменш вживані токени для прискорення об- числень. Програмна інженерія виробництва програмних продуктів 27 Метод забезпечення якості коментарів до внесених змін у системах контролю версій Перший фільтр (Рис. 2) було побудо- вано на основі моделі з використанням по- внозв'язного (Dense) шару, який склада- ється з: 1. двох вагових шарів (weighted layers): а. вхідного (Embedding) шару; б. вихідного повнозв'язного шару (Dense) [14] з кількістю нейронів, яка дорівнює кілько- сті бажаних відгуків (M = 2); 2. проміжного шару без ваг (Global Average Pooling) [14]. Таблиця 2 Особливості сервісів програмного інтерфейсу GitHub REST API # № Назва сервісу URL-по- силання GET-параметри «Корисні» поля для дослідження 1 1 Отри- мання пе- реліку ре- позито- ріїв https://api. github.com/re positories since – параметр, зна- чення якого повинне бути цілим числом та відповідає ідентифікатору репозито- рія. Він не є обов’язковим. Якщо цей параметр присут- ній, то у відповіді буде по- вернуто перелік репозито- ріїв, ідентифікатори яких більші за вказаний у пара- метрі. id – ідентифікатор репозиторію; full_name – назва репозиторію; description – детальний опис репози- торію. 2 2 Отри- мання по- відом- лень до внесених змін для кожного репози- торію https://api. github.com/re pos/[full_nam e]/commits?p er_page=100, де full_name – назва репо- зиторію з пу- нкту № 1 per_page – кількість по- відомлень про внесені зміни у відповіді на один за- пит. Необов’язковий пара- метр. За замовчуванням встановлено 30 повідом- лень. sha – символьна послі- довність (відбиток) повідо- млення про внесені зміни, з якого потрібно починати пошук. sha – символьна послідовність (від- биток) повідомлення про внесені зміни; message – повідомлення про внесені зміни. Знаходиться в JSON-об’єкті «commit»; date – дата та час, коли були внесені зміни до репозиторію. Знаходиться в JSON-об’єкті «author», який, у свою чергу, розміщений у JSON-об’єкті «commit». sha з JSON-масиву parents – симво- льна послідовність (відбиток) повідом- лення про внесені зміни попередніх вне- сених змін. -1500 500 2500 4500 6500 Кі ль кі ст ь по ві до мл ен ь пр о вн ес ен і з мі ни Не відповідає вимогам Відповідає вимогам Рис. 1. Розподіл повідомлень про внесені зміни Програмна інженерія виробництва програмних продуктів 28 Як алгоритм оптимізації ваг обрано AdamW [9], що так само є алгоритмом Adam зі спеціальним варіантом регуляриза- ції на основі пониження ваг (weight decay). Обраний алгоритм демонструє швидше на- вчання і краще узагальнення, основними кроками якого є: 1. ініціалізація параметрів: а. встановлення початкових зна- чень для параметрів моделі θ0 (вектор ваг) випадковим чином; б. ініціалізація першого моменту (оцінка середнього градієнта) 0m = 0 та другого моменту (оці- нка дисперсії градієнта) 0v = 0 ; в. встановлення гіперпараметрів: η – швидкість навчання (learning rate); β і β – коефіцієнти згасання для першого та другого моментів; ε – деяке мале значення для запо- бігання діленню на нуль; λ – коефіцієнт вагового спаду (weight decay); 2. обчислення градієнта: для кожної ітерації t обчислюється градієнт фу- нкції втрат: t tg f ( ),=   (4) де f ( ) – це функція втрат, tg – градієнт для поточних парамет- рів; 3. оновлення моментів: а. оновлення першого моменту (оцінка середнього градієнта): t 1 t 1 1 tm m (1 )g−= + − (5) б. оновлення другого моменту (оцінка дисперсії градієнта): 2 t 2 t 1 2 tv v (1 )g−=  + − (6) 4. коригування зміщення моментів: для того, щоб компенсувати змі- щення на початкових етапах (оскі- льки 0m 0= та 0v 0= ), відбувається коригування: t t t 1 mm , 1 = − (7) t t t 2 vv 1 = − (8) 5. оновлення параметрів з урахуван- ням вагового спаду та адаптивної швидкості навчання: t t t 1 t 1 t m , v − −     =  − +  +   (9) де ваговий спад t 1− застосову- ється окремо від основного процесу оновлення градієнта, що робить AdamW відмінним від класичного Adam; 6. повторення кроків 2 – 5 для кожної ітерації t, поки не буде досягнуто зу- пинки (залежно від кількості епох або критеріїв зупинки). У моделі другого фільтру описів внесених змін (Рис. 3) для зменшення про- яву явища перенавчання використано ме- тоди регуляризації: 1. введено додатковий шар Dropout з коефіцієнтом 0.3 – випадкове ви- ключення нейронів шару із заданою Рис. 2. Архітектура моделі з повнозв'язним шаром без методів регуляризації Рис. 3. Архітектура моделі з повнозв'язним шаром та методами регуляризації Програмна інженерія виробництва програмних продуктів 29 ймовірністю p під час кожної ітера- ції навчання, метою якого є переш- коджання спільній адаптації ваг ней- ронів шару, яка у свою чергу приз- водить до перенавчання [10]; 2. використано метод ранньої зупинки. Окрім того, до частини, яка видобу- ває ознаки тексту для подальшої класифіка- ції, було додано різні варіанти рекурентних шарів, в результаті чого вдалося побуду- вати 5 різних моделей: 1. один LSTM-шар з 48-ма нейронами (Рис. 4); 2. один двонаправлений (bidirectional) LSTM/GRU-шар з 24-ма нейронами (загалом 48 нейронів) (Рис. 5); 3. два двонаправлені (bidirectional) LSTM/GRU-шари з 12-ма нейро- нами кожний шар (загалом 48 ней- ронів) (Рис. 6). Слід зауважити, що для навчання моделей було використано методологію, яка базується на основі перевірної підмно- жини. Вона полягає у тому, що весь досту- пний набір маркованих даних поділяється на частини, що не перетинаються, а саме: з навчальної множини (training set) було ви- ділено 20% на перевірну підмножину (validation subset), а решту – для навчання моделей-кандидатів. Для імплементації наведених вище моделей було використано мову програму- вання Python (версії 3.10.12) та застосовано бібліотеку TensorFlow (2.15.0), тому що вона має підтримку GPGPU та TPU техно- логій, які є однією зі складових дослі- дження. У Таблиці 3 наведено порівняльну характеристику між TensorFlow та іншими популярними бібліотеками для машинного навчання, такими як PyTorch [12], Keras [8] та Scikit-learn [13]. Кожна з цих бібліотек має свої унікальні можливості та підходить для різних типів завдань. Рис. 4. Архітектура моделі з рекурентним LSTM-шаром та методами регуляризації Рис. 5. Архітектура моделі з одним рекурентним BiLSTM/BiGRU-шаром та методами регуляризації Рис. 6. Архітектура моделі з двома рекурентними BiLSTM/BiGRU-шарами та методами регуляризації Програмна інженерія виробництва програмних продуктів 30 Таблиця 3 Особливості бібліотек для машинного навчання Характеристика TensorFlow PyTorch Keras Scikit-learn Рік випуску 2015 2016 2015 2007 Розробник Google Facebook (Meta) Google (підмодуль TensorFlow) Інститут Франсуа Шоле Мова програму- вання Python, C++, Java, Go, JavaScript, Swift Python, C++ Python Python, C++ Основне викори- стання Глибоке навчання, нейронні мережі Глибоке навчання, нейронні мережі Інтерфейс для TensorFlow/висо- корівневе API Класичні ML-ал- горитми, регресія, класифікація Підтримка CPU/GPU Так (підтримує GPU через CUDA, TPU) Так (GPU через CUDA) Так (через TensorFlow або Theano) Лише CPU (GPU підтримується че- рез обгортки) Модульність Висока (TensorFlow 2.0 спрощений) Висока (динамічні обчислювальні графи) Висока (зручний API поверх TensorFlow) Середня (для тра- диційних ML-мо- делей) Динамічний граф Ні (але є функція Eager Execution у TF 2.0) Так (основа PyTorch) Ні (покладається на TensorFlow) Ні Простота вико- ристання Відносно складна, але зростає з TF 2.0 Простий для про- тотипування, інту- їтивний Дуже простий (ви- сокий рівень абст- ракції) Дуже простий (для класичних за- дач ML) Гнучкість Висока (низький рівень контролю) Висока (простий контроль над об- численнями) Обмежена (висо- кий рівень абстра- кції) Середня (зосере- джена на класич- них алгоритмах) Обчислювальні графи Статичні (але є динамічна можли- вість) Динамічні (ство- рюються під час виконання) Статичні (через TensorFlow або Theano) Ні Розподілені об- числення Так, відмінна під- тримка (TPU, кла- стеризація) Обмежена підтри- мка Через TensorFlow Ні Підтримка мобі- льних пристроїв Так (TensorFlow Lite) Ні Так (через TensorFlow Lite) Ні Експорт моделей TensorFlow SavedModel, HDF5, TF.js, TF Lite TorchScript, ONNX HDF5, TensorFlow SavedModel Pickle, ONNX Спільнота та ре- сурси Велика, багато офіційної докуме- нтації, підтримка від Google Велика, активна спільнота, багато прикладів Велика спільнота через TensorFlow/Keras Дуже велика для класичного ML Продуктивність Висока продукти- вність, особливо на великих моде- лях Висока продукти- вність на GPU Висока (через TensorFlow) Висока продукти- вність для тради- ційного ML Використання в індустрії Широко викорис- товується, особ- ливо у великих проєктах (Google, Uber, Airbnb) Використовується для наукових дос- ліджень і прототи- пування Широко викорис- товується для швидкої розробки Дуже популярний у наукових дослі- дженнях і ста- ртапах Програмна інженерія виробництва програмних продуктів 31 Як середовище виконання було об- рано Google Colab [5], тому що воно надає користувачеві (досліднику, розробнику) «в хмарі» апаратні ресурси технологій GPGPU та TPU, а також в ньому можна використо- вувати всі наведені бібліотеки для машин- ного навчання. Під час використання платформи Google Colab було визначено наступні пе- реваги: 1. Доступ до потужних GPU і TPU. Як відомо, графічні та тензорні проце- сори значно прискорюють трену- вання моделей глибокого навчання. Google Colab дозволяє використову- вати ці обчислювальні потужності, що важливо для проєктів, які потре- бують великих ресурсів; 2. Це дає змогу тренувати моделі, які потребують багато обчислень, без необхідності купувати дорогий апа- ратний ресурс; 3. Хмарне середовище: Google Colab працює у браузері, тому користува- чеві не потрібно нічого встановлю- вати локально на свій комп’ютер. Всі обчислення виконуються на сер- верах Google, а дані та написані сце- нарії автоматично зберігаються на хмарному носії Google Drive, що по- легшує збереження та доступ до проєктів; 4. Інтеграція з GitHub: ця можливість дозволяє відкривати, редагувати та зберігати вихідні тексти програм безпосередньо в репозиторіях GitHub; 5. Легкий обмін та співпраця: користу- вачі можуть ділитися своїми сцена- ріями через посилання, як це відбу- вається з Google Docs або Google Sheets. Інші ж користувачі можуть редагувати або переглядати ваші зміни вихідних текстів у режимі ре- ального часу. Це зручно для коман- дної роботи, наукових досліджень або навчання, коли існує необхід- ність працювати над одним проєк- том одночасно з кількома користу- вачами; 6. Підтримка основних бібліотек для машинного навчання. Google Colab має попередньо встановлені популя- рні бібліотеки, такі як TensorFlow, Keras, PyTorch, Scikit-learn, Pandas, NumPy та інші. Це дозволяє швидко почати роботу, не гаючи часу на встановлення пакетів; 7. Інтерактивне Python-середовище. Colab використовує Jupyter Notebook у хмарі, що дозволяє пи- сати Python-сценарії, виконувати його по блоках, а також додавати ві- зуалізації, текстові блоки та графіки. Це інтерактивне середовище ідеа- льно підходить для експериментів з даними та розробки моделей машин- ного навчання, наукових досліджень і навчання; 8. Підтримка інших мов програму- вання. Хоча основною мовою в Google Colab є Python, також існує можливість виконувати сценарії, на- писані іншими мовами, за допомо- гою спеціальних команд. Напри- клад, R, JavaScript, SQL тощо; 9. Розширення для візуалізації: Colab підтримує бібліотеки для візуаліза- ції, такі як Matplotlib, Seaborn, Plotly та інші, що дозволяє створювати графіки, діаграми та візуалізації ре- зультатів безпосередньо в Jupyter- блокнотах; 10. Безперервне навчання моделей, тобто існує можливість виконувати процеси навчання моделей протягом кількох годин на серверах Google Colab, що зручно для довгих трену- вань, особливо у роботі з великими нейронними мережами Аналіз архітектур паралельних обчислень та їх застосування для навчання моделей фільтра Основною особливістю сучасних графічних відеоадаптерів, які використову- ють графічні процесори (GPU), є наявність набору потокових мультипроцесорів (SM), що використовувалися раніше лише в алго- ритмах і задачах, пов’язаних з обробкою графічних зображень. Програмні технології (інтерфейси), що застосовуються розробни- Програмна інженерія виробництва програмних продуктів 32 ками програмного забезпечення для ство- рення програм такого напрямку, викорис- товують пам’ять відеоадаптера для розмі- щення структур даних, таких як текстури, буфери, визначають конвеєр обробки, ко- жен етап якого відповідає за свої специфі- чні дії, а саме: растеризацію, інтерполяцію, блендинг, теселяцію [2] тощо. Технологія обчислень загального призначення на графічних процесорах (GPGPU) ґрунтується на використанні ве- ликої кількості процесорів GPU, що працю- ють паралельно, для обробки даних за до- помогою алгоритмів загального призна- чення (наукових чи інших, але не обов’яз- ково пов’язаних з обробкою зображень). Потоковий процесор на GPU має простішу структуру порівняно з обчислю- вальним вузлом CPU. Тобто такі вузли менш універсальні і виконують менший на- бір функцій, аніж вузли процесора. Проте, оскільки їхня кількість велика, то для пев- них типів задач можна значно підвищити швидкодію. Найкращого прискорення вда- ється досягти для алгоритмів, що підтриму- ють концепцію паралелізму за даними (один паралельний потік обробляє свою об- ласть у пам’яті). Тому зазвичай GPGPU за- стосовують у наступних сферах: обробка зображень (Reduction, Histogram, Fast Fourier Transform, Summed Area Table); об- робка відеоданих (Transcode, Digital Effects, Analysis); лінійна алгебра; моделювання (Technical, Finance, Academic, Some Databases) [1] тощо. TPU (Tensor Processing Unit) – це спеціалізований інтегральний процесор, розроблений компанією Google, який опти- мізований для виконання операцій глибо- кого навчання, зокрема, обчислень з тензо- рами в рамках машинного навчання. Він використовується для прискорення роботи моделей штучного інтелекту, особливо в системах, що працюють з великими обся- гами даних і потребують високої продукти- вності. У Таблиці 4 наведено порівняльну характеристику технологій GPGPU та TPU: Отже, основна відмінність полягає в тому, що TPU розроблені спеціально для швидкої обробки великих обсягів даних, які використовуються в машинному навчанні (зокрема, нейронних мережах), тоді як GPU є універсальнішими і застосовуються як у графічних, так і в обчислювальних задачах, включно із тренуванням моделей машин- ного навчання. Кожна з технологій має свої переваги, і вибір між ними визначається конкретними вимогами до продуктивності та характером обчислювальних задач. Ефективність застосування техноло- гій GPGPU та TPU до задачі забезпечення якості коментарів до внесених змін у вихід- них текстах програм для систем контролю версій показано в Таблиці 5. Результати цього експерименту по- казали, що найбільшого прискорення нав- чання моделей вдалося досягти саме з вико- ристанням GPU. Оцінка методу забезпечення якості коментарів Для оцінки якості забезпечення ко- ментарів до внесених змін систем конт- ролю версій використано такі метрики [13]: 1. частка правильних відповідей (Accuracy): TP TNAccuracy , TP TN FP FN + = + + + (10) де TP (True Positive) – вірні позити- вні відповіді; TN (True Negative) – вірні негативні відповіді; FP (False Positive) – невірні позити- вні відповіді; FN (False Negative) – невірні негати- вні відповіді. 2. частка вірних позитивних відпові- дей серед усіх позитивних відпові- дей класифікатора (Precision): TPPrecision TP FP = + (11) 3. частка вірних спрацювань на пози- тивних об’єктах (Recall): TPRecall TP FN = + (12) 4. середнє гармонійне (F1-score): 1 Precision RecallF 2 Precision Recall  = + (13) Програмна інженерія виробництва програмних продуктів 33 Таблиця 5 Порівняльна таблиця часу виконання на- вчання моделей за допомогою CPU, TPU та GPU Модель CPU (Intel Xeon з 2-ма яд- рами) TPU другого поко- ління з 8-ма яд- рами GPU (Nvidia Tesla T4 з 320-ма тензор- ними яд- рами) Dense (без методів регуляри- зації) 44 хв 7 с 9 хв 47 с 2 хв 26 с Dense (з регуляри- зацією) 57 хв 52 с 7 хв 33 с 1 хв 55 с LSTM (48 нейронів) 59 хв 34 с 15 хв 56 с 1 хв 4 с BiLSTM (1 шар з 24-ма ней- ронами) 1 год 10 хв 59 с 11 хв 38 с 1 хв 33 с BiLSTM (2 шари з 12-ма ней- ронами кожний) 1 год 14 хв 34 с 16 хв 56 с 2 хв 35 с BiGRU (1 шар з 24- ма нейро- нами) 1 год 3 хв 19 с 10 хв 36 с 1 хв 34 с BiGRU (2 шари з 12- ма нейро- нами кож- ний) 1 год 5 хв 55 с 18 хв 53 с 2 хв 49 с Хоча варто врахувати, що для філь- тра повідомлень про внесені зміни важли- віша саме повнота (Recall), тому що краще Таблиця 4 Порівняльна характеристика технологій GPGPU та TPU Характеристика TPU GPU Призначення Оптимізовано для виконання опера- цій з тензорами, орієнтованих на об- числення в нейронних мережах (ма- шинне навчання, зокрема TensorFlow) Широко застосовується для парале- льних обчислень, графіки, рендери- нгу і тренування нейронних мереж Виробник Google Nvidia, AMD Архітектура Спрямована на матричні операції (використовує матричні множники) Паралельна обробка, тисячі ядер для обчислень Тип обчислень Високоефективні для операцій з ни- зькою точністю (FP16, INT8) Гнучка точність обчислень (FP32, FP64), підходить для широкого спе- ктру обчислень Програмне забезпе- чення Спеціалізоване для TensorFlow, Google Cloud Підтримує TensorFlow, PyTorch, Keras та інші фреймворки Швидкість обробки Висока продуктивність при трену- ванні нейронних мереж Залежить від моделі, проте найсуча- сніші GPU мають високу швидкість, але відстають від TPU у певних за- дачах Енергоспоживання Оптимізовані для низького енерго- споживання при виконанні ML за- дач Високе енергоспоживання, особ- ливо у потужних моделях для ма- шинного навчання Ціна Доступний лише як хмарна послуга Google (не доступний для індивідуа- льного продажу) Можна придбати як окремі пристрої різного рівня продуктивності Застосування Виключно для машинного навчання, нейронних мереж Широке застосування: графіка, си- муляції, машинне навчання, ренде- ринг Пам'ять (тип і роз- мір) Спеціалізована швидка пам'ять для ML (HBM) GDDR5, GDDR6, HBM, різні об'єми пам'яті Гнучкість у викорис- танні Менш універсальні, спеціалізовані для ML Висока універсальність, використо- вується в багатьох сферах Програмна інженерія виробництва програмних продуктів 34 відхилити повідомлення та порекоменду- вати розробнику доповнити його або пере- фразувати. Отже, результати роботи створених моделей наведені у Таблиці 6. Таблиця 6 Порівняння ефективності побудованих моделей для імплементації фільтра повідомлень про внесені зміни Модель Метрика Без використання мето- дів, що долають проблему нерівномірних даних Зсув порогу (threshold moving) Dense (без методів регуляризації) Accuracy F1-score 0.786 0.622 0.788 0.616 Dense (з регуляриза- цією) Accuracy F1-score 0.816 0.648 0.817 0.637 LSTM (48 нейронів) Accuracy F1-score 0.801 0.445 0.801 0.445 BiLSTM (1 шар з 24-ма нейронами) Accuracy F1-score 0.796 0.664 0.798 0.655 BiLSTM (2 шари з 12-ма нейронами кожний) Accuracy F1-score 0.794 0.677 0.796 0.675 BiGRU (1 шар з 24- ма нейронами) Accuracy F1-score 0.808 0.651 0.811 0.629 BiGRU (2 шари з 12-ма нейронами кожний) Accuracy F1-score 0.791 0.635 0.790 0.630 Динаміку навчання моделей представлено на Рис. 7-9, а саме зображено графіки зна- чення точності та середнього гармонійного залежно від епохи. Рис. 7. Графік залежності значення різних метрик оцінювання якості навчання нейронних мереж з Dense-шаром від порядкового номера епохи навчання Програмна інженерія виробництва програмних продуктів 35 Графіки точності RNN-мереж мають дещо стрибкоподібний характер через осо- бливості рекурентних нейронних мереж, тому що вони «працюють» із послідовними даними, і точність може різко змінюватися залежно від того, наскільки добре модель вловила послідовні зв’язки в певних набо- рах даних. Якщо модель починає «вчитися» на певних зразках і покращує точність для конкретних послідовностей, то вона може втрачати здатність узагальнювати інші зра- зки, що призводить до стрибків. Рис. 8. Графік залежності значення точності рекурентних нейронних мереж від порядко- вого номера епохи навчання Рис. 9. Графік залежності значення метрики середнього гармонійного рекурентних нейрон- них мереж від порядкового номера епохи навчання Програмна інженерія виробництва програмних продуктів 36 Висновки У роботі запропоновано різні під- ходи до імплементації фільтра повідомлень до внесених змін. Цей фільтр є одним з ета- пів аналізу, обробки та підготовки даних для методу, який буде мати можливість створювати повідомлення про внесені зміни на їхній основі. Проведено порівняльний аналіз ос- новних програмно-апаратних платформ, за- пропонованих у хмарному середовищі Google Colab задля прискорення навчання моделей фільтра, а саме: CPU, TPU та GPU. Часові заміри тривалості навчання показу- ють доцільність використання тензорного процесору (TPU) від корпорації Google та графічного адаптеру (GPU) від Nvidia у по- рівнянні з центральним процесором (CPU) від Intel. Результати показують доміну- вання графічного адаптеру Nvidia Tesla T4 над Google TPU v2 у 15 разів, а над Intel Xeon – у 45 разів. У свою чергу TPU пере- вершує CPU у 6 разів. Виконано оцінку методу забезпе- чення якості описів до внесених змін. З таб- лиці результатів видно, що найкращий ре- зультат має RNN-мережа, яка містить один двонаправлений (bidirectional) GRU-шар з 24-ма нейронами для видобутку ознак тек- сту: середнє гармонійне становить 65.1 %, а повнота – 80.8 %. Окрім того, така архітек- тура мережі навчається з методами регуля- ризації за 1 хвилину та 34 секунди за допо- могою GPU. Хоча послідовна та інші реку- рентні моделі (окрім, LSTM) також мають порівняні результати, як щодо точності, так і щодо швидкості. Показано, що середовище Google Colab є потужним інструментом для швид- кого прототипування та розробки моделей машинного навчання. Завдяки своїм мож- ливостям (GPU, TPU та інтеграції з хмар- ними сервісами) він стає одним із найзруч- ніших інструментів для студентів, дослід- ників та інженерів програмного забезпе- чення. Література 1. Погорілий С.Д., Семьонов Б.О. Дослі- дження паралельних алгоритмів мовою Python з використанням різних платформ. Наукові записки НаУКМА. Вип. 198, 2017. С. 14–21. 2. Погорілий С.Д., Семьонов Б.О. Дослі- дження програмної бібліотеки Linpack на архітектурі CUDA мовою програмування Python. Наукові праці ДонНТУ. Вип. 23, № 2. С. 98–106. 3. Buse R., Weimer W. Automatically documenting program changes. Proceedings of the IEEE/ACM International Conference on Automated Software Engineering(2010). 4. GitHub Docs GitHub REST API. GitHub Docs. URL: https://docs.github.com/en/rest?apiVersion=2 022-11-28 (дата звернення: 07.10.2024). 5. Google Colaboratory – Google. research.google.com. 2024. URL: https://research.google.com/colaboratory/faq.h tml (дата звернення: 07.10.2024). 6. How to Write a Git Commit Message. cbeams. 30.08.2014. URL: https://cbea.ms/git- commit/#seven-rules (дата звернення: 07.10.2024). 7. Jiang S., Armaly A., McMillan C. Automatically generating commit messages from diffs using neural machine translation. Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering(2017). 8. Keras Home - Keras Documentation. Keras.io. 2019. URL: https://keras.io/ (дата звернення: 07.10.2024). 9. Loshchilov I., Hutter F. Decoupled weight decay regularization. Proceedings of the ICLR(2019). 10. N.K. Nissa Text Messages Classification using LSTM, Bi-LSTM, and GRU. Medium. 23.08.2022. URL: https://nzlul.medium.com/theclassification-of- text-messages-using-lstm-bi-lstm-and- gruf79b207f90ad (дата звернення: 07.10.2024). 11. N.V. Otten How To Use Text Normalization Techniques In NLP With Python [9 Ways. Spot Intelligence. 25.01.2023. URL: https://spotintelligence.com/2023/01/25/text- normalization-techniquesnlp/ (дата звер- нення: 07.10.2024). 12. PyTorch PyTorch documentation — PyTorch master documentation. Pytorch.org. 2019. URL: https://pytorch.org/docs/stable/index.html (дата звернення: 07.10.2024). 13. Scikit-Learn scikit-learn: machine learning in Python — scikit-learn 0.16.1 documentation. Програмна інженерія виробництва програмних продуктів 37 Scikit-learn.org. 2019. URL: https://scikit- learn.org/ (дата звернення: 07.10.2024). 14. TensorFlow TensorFlow. TensorFlow. 2019. URL: https://www.tensorflow.org/ (дата звер- нення: 07.10.2024). Одержано: 26.12.2024 Внутрішня рецензія отримана: 08.01.2025 Зовнішня рецензія отримана: 08.01.2025 Про авторів: 1Семьонов Богдан Олександрович, аспірант. https://orcid.org/0009-0001-3692-9415. 2Погорілий Сергій Дем’янович, доктор технічних наук, професор. https://orcid.org/0000-0002-6497-5056. Місце роботи авторів: 1Київський національний університет імені Тараса Шевченка, тел. +380 (66) 451-97-00 E-mail: bohdan.semonov@gmail.com 2Київський національний університет імені Тараса Шевченка, Тел. +380 (66) 434-27-86 E-mail: sdp7799@gmail.com