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

в 11:04, , рубрики: c++, mlpack, open source, vowpal wabbit, Блог компании VDSina.ru, Программирование, северная корея, Учебный процесс в IT

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

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

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

Патч mlpack

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

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

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

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

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

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

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

Патч vowpal wabbit

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

Автор: Mikhail

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js