- PVSM.RU - https://www.pvsm.ru -

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом

В 2016 году я отправился в Северную Корею, чтобы учить студентов магистратуры тому, как участвовать в разработке ПО с открытым исходным кодом [1]. Вот фотография с одной из моих лекций:

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом - 1

В рамках курса студенты должны были опубликовать патчи для выбранного ими проекта. В этой статье я расскажу о том, как два патча были внесены в популярные библиотеки машинного обучения mlpack [2] и vowpal wabbit [3]. Я считаю, что эти примеры подчёркивают, что научное сотрудничество между северокорейцами и американцами может принести выгоду обычным гражданам обеих стран и улучшить дипломатические взаимоотношения.

Патч mlpack

Один из студентов работал над «системой распознавания транспортных средств на основе зрения» для своей магистерской дипломной работы. В этой задаче у нас есть трансляция с видеокамеры, установленной недалеко от дороги. Цель заключается в подсчёте количества проезжающих легковых и грузовых автомобилей. Это довольно стандартная задача машинного зрения, которую регулярно реализуют студенты всего мира, её выходные данные выглядят примерно так:

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом - 2

(К сожалению, это изображение взято не из проекта студента, а из https://github.com/ahmetozlu/vehicle_counting_tensorflow [4].)

Очевидно, студенту посоветовало заняться этой задачей Министерство транспорта Северной Кореи, потому что в Пхеньяне быстро растёт объём трафика. Люди, посещавшие Пхеньян в 1990-х, часто говорили о малом количестве машин на дорогах, но в наши дни город изобилует трафиком [5]. Думаю, знаменитым пхеньянским девушкам-регулировщицам [6] пригодилась бы автоматизированная помощь.

Студенты-выпускники в Северной Корее имеют доступ к Интернету без фильтрации, и мой студент воспользовался этим доступом, чтобы скачать библиотеку машинного обучения mlpack для реализации своей системы распознавания транспорта. Он решил использовать mlpack, потому что она написана на C++, а это основной язык, который студенты изучали на старших курсах. Но они столкнулись с очень серьёзной проблемой: их компьютер оказался очень старым и в нём не хватало памяти для компиляции библиотеки!

Потратив около часа на отладку, мы со студентом выявили источник проблемы, ими оказались шаблоны C++, используемые в mlpack. Во всех частях кода mlpack активно используются шаблоны, чтобы обеспечить возможность обобщённого программирования без затраты лишних ресурсов во время выполнения. Благодаря шаблонам mlpack получила репутацию библиотеки, выполняющей модели очень быстро и почти без использования лишней памяти [7], однако обратной стороной этого стала медленная и требующая много памяти компиляция. В то время компиляция требовала до 2 ГБ ОЗУ, а на ноутбуке северокорейского студента был установлен только 1 ГБ.

В конечном итоге студенту удалось заставить mlpack скомпилироваться, значительно оптимизировав процедуру компиляции. В оригинальном коде содержались сотни необязательных конструкций #include, и для решения проблемы достаточно было просто удалить этот мёртвый код. Сам коммит можно посмотреть на github [8]. Это исправление повысило скорость компиляции на 25% и более чем в два раза снизило потребление памяти. Десятки тысяч людей и компаний, использовавшие mlpack после этого патча, очень выиграли от того, что северокорейский студент выполнил такую потрясающую работу.

Патч vowpal wabbit

Многие из студентов моего курса пока не определились с темой своей дипломной, поэтому я порекомендовал одному студенту поработать над анализом настроения постов в Twitter. Допустим, у нас есть такой твит:

Как я учил студентов Северной Кореи разрабатывать ПО с открытым исходным кодом - 3


и нам нужно классифицировать твит, как имеющий положительное или отрицательное отношение к его теме. Например, в показанном выше твите есть отрицательное отношение к саммиту в Сингапуре 2018 года [9] между Дональдом Трампом и Ким Чен Ыном. Проанализировав тысячи (или миллионы/миллиарды) твитов таким образом, мы можем определить, как разные общества относятся к определённой теме. Это тоже совершенно повседневная задача, реализуемая студентами всего мира. Но для северокорейских студентов эта задача стала необычной.

Все студенты слышали о Twitter, но никогда им не пользовались. Несмотря на то, что их компьютеры имели прямой нефильтруемый доступ к Интернету, им было запрещено создавать аккаунты в сервисах соцсетей. Как мне объяснили, причина заключается в том, что США контролируют большинство инфраструктуры Интернета (в том числе такие веб-сайты, как Twitter), и с помощью таких программ, как PRISM [10] АНБ и Cyber Command [11] Вооружённых сил США шпионит за пользователями и манипулирует соцсетями.

США и Северная Корея так и не подписали мирного соглашения после Корейской войны, поэтому северокорейцев по-прежнему очень беспокоит возможность нападения США. Запрет на создание аккаунтов в соцсетях — это одна из «мер защиты», которых северокорейских студентов должны придерживаться, чтобы снизить влияние потенциальных «американских кибератак». К счастью, изучение Twitter — одна из областей моих исследований, и я привёз с собой довольно объёмные массивы данных, которые могли анализировать студенты.

Как любил напоминать мне один из моих северокорейских коллег, этот проект был примечателен тем, что в нём северокорейский студент впервые анализировал данные Twitter. И анализ данных Twitter вскоре приобретёт геополитическую важность: спустя менее чем год после начала проекта президентом США был избран Дональд Трамп, и Twitter стал одним из основных инструментов, через которые его администрация начала сообщать о своей внешней политике миру. К счастью, к тому времени, как Трамп придал Twitter этот псевдоофициальный статус, хотя бы малая доля северокорейцев уже имела опыт анализа его данных. Они могли использовать этот опыт, чтобы лучше понимать и твиты Трампа, и ответы, отправляемые миллионами американцев. Правительство Северной Кореи сегодня признаёт важность пользования соцсетями для понимания американской политики, поэтому недавно создало новое Министерство иностранных дел, занимающееся анализом намерений США [12] через соцсети и другие источники публичной информации. И для обеих стран это отличная новость! США созданы на основе системы прозрачности, потому что государство хочет, чтобы каждый (в том числе и северокорейцы) понимал, как работает демократия и как нам лучше договариваться, чтобы достигать общих целей.

Это взаимодействие между научным обменом знаниями и дипломатией называется дипломатией науки [13], оно оказалось чрезвычайно важным [14] для успешного обсуждения США и СССР ограничений на системы ядерных вооружений во время холодной войны. Я считаю, что мой труд по преподаванию ПО с открытым исходным кодом в Северной Корее поможет показать, что эта модель дипломатии науки также может быть успешно применена и в переговорах между США и Северной Кореей.

Но вернёмся ко вкладу моего студента в open source. Я порекомендовал, чтобы студент использовал для выполнения анализа vowpal wabbit [15], так как этот отличный инструмент для анализа объёмных текстовых массивов данных. Студент скачал код, скомпилировал его и проанализировал настроение нескольких тысяч твитов. В этом случае код хорошо работал на компьютере студента без всяких изменений. Однако для прохождения курса ПО с открытыми исходниками ему всё равно нужно было опубликовать патч.

Он нашёл на Github открытый issue [16] с просьбой добавить возможность менять способ взаимодействия свободного члена с регуляризацией L2 при обучении линейных моделей, и опубликовал патч [17], добавляющий такое поведение. (Пул-реквесты обоих проектов были отправлены с моего Github-аккаунта, потому что Github считается соцсетью, а северокорейским студентам нельзя создавать аккаунты в соцсетях.) Позже в этом патче обнаружился баг [18], и был добавлен следующий патч [19], устраняющий эту проблему. Именно таким образом и должен работать процесс разработки ПО с открытым исходным кодом, и мне кажется потрясающим, что open source позволяет обычным людям со всего света находить общие цели, создавая отличное ПО, даже несмотря на кажущиеся неразрешимыми политические разногласия.

Будущее open source в Северной Корее

Если я не ошибаюсь, то отправленные в рамках этого курса патчи стали первым вкладом в open source, сделанным из Северной Кореи; к сожалению, они же стали последними.

На следующий год (2017) я организовал ещё одно путешествие в Северную Корею и должен был привезти с собой ещё несколько преподавателей ПО с открытым исходным кодом, однако президент Трамп запретил американцам посещать Северную Корею [20]. Поэтому мы с другими преподавателями больше не могли встретиться с северокорейскими студентами, и больше никто не мог учить их делать вклад в open source или мотивировать их к этому.

Президент Байден недавно объявил о своей политике «практичной дипломатии» [21] с Северной Кореей. Однако подробности этой политики пока неизвестны, а запрет на посещение сохраняется. Поэтому американцы не смогут воспользоваться тем, что северокорейцы устраняют баги в их коде, а дипломатию науки, которая, по сути, снизила трения между США и СССР, невозможно использовать как инструмент снижения трений между США и Северной Кореей.


На правах рекламы

VDSina предлагает серверы в аренду [22] под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO [23], удобная панель управления [24] собственной разработки и посуточная оплата.

Подписывайтесь на наш чат в Telegram [25].

Автор: Mikhail

Источник [26]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/365716

Ссылки в тексте:

[1] ПО с открытым исходным кодом: https://en.wikipedia.org/wiki/Open_source

[2] mlpack: https://mlpack.org

[3] vowpal wabbit: https://vowpalwabbit.org

[4] https://github.com/ahmetozlu/vehicle_counting_tensorflow: https://github.com/ahmetozlu/vehicle_counting_tensorflow

[5] изобилует трафиком: https://www.pinterest.com/pin/139893132146429424/

[6] знаменитым пхеньянским девушкам-регулировщицам: https://www.youngpioneertours.com/north-korean-traffic-girls/

[7] очень быстро и почти без использования лишней памяти: https://www.mlpack.org/benchmark.html

[8] посмотреть на github: https://github.com/mlpack/mlpack/commit/5bb2f245d7ad5de70384be6b3486690b417d854c

[9] саммиту в Сингапуре 2018 года: https://en.wikipedia.org/wiki/2018_North_Korea%E2%80%93United_States_Singapore_Summit

[10] PRISM: https://en.wikipedia.org/wiki/PRISM_(surveillance_program)

[11] Cyber Command: https://www.lawfareblog.com/integration-psychological-operations-cyber-operations

[12] новое Министерство иностранных дел, занимающееся анализом намерений США: https://www.dailynk.com/english/north-korea-forms-new-foreign-ministry-organization-focused-analyzing-us-intentions/

[13] дипломатией науки: https://www.aaas.org/programs/center-science-diplomacy

[14] чрезвычайно важным: https://americandiplomacy.web.unc.edu/2019/11/how-u-s-soviet-scientific-and-technical-exchanges-helped-end-the-cold-war/

[15] vowpal wabbit: https://vowpalwabbit.org/

[16] открытый issue: https://github.com/VowpalWabbit/vowpal_wabbit/issues/919

[17] патч: https://github.com/VowpalWabbit/vowpal_wabbit/pull/1151

[18] баг: https://github.com/VowpalWabbit/vowpal_wabbit/issues/1729

[19] следующий патч: https://github.com/VowpalWabbit/vowpal_wabbit/pull/1794

[20] запретил американцам посещать Северную Корею: https://www.bbc.com/news/world-asia-40680500

[21] «практичной дипломатии»: https://www.reuters.com/world/asia-pacific/biden-administration-has-completed-north-korea-policy-review-white-house-2021-04-30/

[22] серверы в аренду: https://vdsina.ru/

[23] ISO: https://vdsina.ru/qa/q/kak-ispolzovat-svoy-obraz-iso-v-vds?partner=habr356

[24] панель управления: https://habr.com/ru/company/vdsina/blog/460107/

[25] наш чат в Telegram: https://t.me/vdsina

[26] Источник: https://habr.com/ru/post/565934/?utm_source=habrahabr&utm_medium=rss&utm_campaign=565934