В 2016 году я отправился в Северную Корею, чтобы учить студентов магистратуры тому, как участвовать в разработке ПО с открытым исходным кодом. Вот фотография с одной из моих лекций:
![](https://habrastorage.org/r/w780q1/webt/ra/s1/k1/ras1k127mcnfysmsw2tnc7qzjko.jpeg)
В рамках курса студенты должны были опубликовать патчи для выбранного ими проекта. В этой статье я расскажу о том, как два патча были внесены в популярные библиотеки машинного обучения mlpack и vowpal wabbit. Я считаю, что эти примеры подчёркивают, что научное сотрудничество между северокорейцами и американцами может принести выгоду обычным гражданам обеих стран и улучшить дипломатические взаимоотношения.
Один из студентов работал над «системой распознавания транспортных средств на основе зрения» для своей магистерской дипломной работы. В этой задаче у нас есть трансляция с видеокамеры, установленной недалеко от дороги. Цель заключается в подсчёте количества проезжающих легковых и грузовых автомобилей. Это довольно стандартная задача машинного зрения, которую регулярно реализуют студенты всего мира, её выходные данные выглядят примерно так:
![](https://habrastorage.org/webt/fi/by/a4/fibya4yoae8z77u9uecv5w8xuhk.gif)
(К сожалению, это изображение взято не из проекта студента, а из https://github.com/ahmetozlu/vehicle_counting_tensorflow.)
Очевидно, студенту посоветовало заняться этой задачей Министерство транспорта Северной Кореи, потому что в Пхеньяне быстро растёт объём трафика. Люди, посещавшие Пхеньян в 1990-х, часто говорили о малом количестве машин на дорогах, но в наши дни город изобилует трафиком. Думаю, знаменитым пхеньянским девушкам-регулировщицам пригодилась бы автоматизированная помощь.
Студенты-выпускники в Северной Корее имеют доступ к Интернету без фильтрации, и мой студент воспользовался этим доступом, чтобы скачать библиотеку машинного обучения mlpack для реализации своей системы распознавания транспорта. Он решил использовать mlpack, потому что она написана на C++, а это основной язык, который студенты изучали на старших курсах. Но они столкнулись с очень серьёзной проблемой: их компьютер оказался очень старым и в нём не хватало памяти для компиляции библиотеки!
Потратив около часа на отладку, мы со студентом выявили источник проблемы, ими оказались шаблоны C++, используемые в mlpack. Во всех частях кода mlpack активно используются шаблоны, чтобы обеспечить возможность обобщённого программирования без затраты лишних ресурсов во время выполнения. Благодаря шаблонам mlpack получила репутацию библиотеки, выполняющей модели очень быстро и почти без использования лишней памяти, однако обратной стороной этого стала медленная и требующая много памяти компиляция. В то время компиляция требовала до 2 ГБ ОЗУ, а на ноутбуке северокорейского студента был установлен только 1 ГБ.
В конечном итоге студенту удалось заставить mlpack скомпилироваться, значительно оптимизировав процедуру компиляции. В оригинальном коде содержались сотни необязательных конструкций
Многие из студентов моего курса пока не определились с темой своей дипломной, поэтому я порекомендовал одному студенту поработать над анализом настроения постов в Twitter. Допустим, у нас есть такой твит:
и нам нужно классифицировать твит, как имеющий положительное или отрицательное отношение к его теме. Например, в показанном выше твите есть отрицательное отношение к саммиту в Сингапуре 2018 года между Дональдом Трампом и Ким Чен Ыном. Проанализировав тысячи (или миллионы/миллиарды) твитов таким образом, мы можем определить, как разные общества относятся к определённой теме. Это тоже совершенно повседневная задача, реализуемая студентами всего мира. Но для северокорейских студентов эта задача стала необычной.
Все студенты слышали о Twitter, но никогда им не пользовались. Несмотря на то, что их компьютеры имели прямой нефильтруемый доступ к Интернету, им было запрещено создавать аккаунты в сервисах соцсетей. Как мне объяснили, причина заключается в том, что США контролируют большинство инфраструктуры Интернета (в том числе такие веб-сайты, как Twitter), и с помощью таких программ, как PRISM АНБ и Cyber Command Вооружённых сил США шпионит за пользователями и манипулирует соцсетями.
США и Северная Корея так и не подписали мирного соглашения после Корейской войны, поэтому северокорейцев по-прежнему очень беспокоит возможность нападения США. Запрет на создание аккаунтов в соцсетях — это одна из «мер защиты», которых северокорейских студентов должны придерживаться, чтобы снизить влияние потенциальных «американских кибератак». К счастью, изучение Twitter — одна из областей моих исследований, и я привёз с собой довольно объёмные массивы данных, которые могли анализировать студенты.
Как любил напоминать мне один из моих северокорейских коллег, этот проект был примечателен тем, что в нём северокорейский студент впервые анализировал данные Twitter. И анализ данных Twitter вскоре приобретёт геополитическую важность: спустя менее чем год после начала проекта президентом США был избран Дональд Трамп, и Twitter стал одним из основных инструментов, через которые его администрация начала сообщать о своей внешней политике миру. К счастью, к тому времени, как Трамп придал Twitter этот псевдоофициальный статус, хотя бы малая доля северокорейцев уже имела опыт анализа его данных. Они могли использовать этот опыт, чтобы лучше понимать и твиты Трампа, и ответы, отправляемые миллионами американцев. Правительство Северной Кореи сегодня признаёт важность пользования соцсетями для понимания американской политики, поэтому недавно создало новое Министерство иностранных дел, занимающееся анализом намерений США через соцсети и другие источники публичной информации. И для обеих стран это отличная новость! США созданы на основе системы прозрачности, потому что государство хочет, чтобы каждый (в том числе и северокорейцы) понимал, как работает демократия и как нам лучше договариваться, чтобы достигать общих целей.
Это взаимодействие между научным обменом знаниями и дипломатией называется дипломатией науки, оно оказалось чрезвычайно важным для успешного обсуждения США и СССР ограничений на системы ядерных вооружений во время холодной войны. Я считаю, что мой труд по преподаванию ПО с открытым исходным кодом в Северной Корее поможет показать, что эта модель дипломатии науки также может быть успешно применена и в переговорах между США и Северной Кореей.
Но вернёмся ко вкладу моего студента в open source. Я порекомендовал, чтобы студент использовал для выполнения анализа vowpal wabbit, так как этот отличный инструмент для анализа объёмных текстовых массивов данных. Студент скачал код, скомпилировал его и проанализировал настроение нескольких тысяч твитов. В этом случае код хорошо работал на компьютере студента без всяких изменений. Однако для прохождения курса ПО с открытыми исходниками ему всё равно нужно было опубликовать патч.
Он нашёл на Github открытый issue с просьбой добавить возможность менять способ взаимодействия свободного члена с регуляризацией L2 при обучении линейных моделей, и опубликовал патч, добавляющий такое поведение. (Пул-реквесты обоих проектов были отправлены с моего Github-аккаунта, потому что Github считается соцсетью, а северокорейским студентам нельзя создавать аккаунты в соцсетях.) Позже в этом патче обнаружился баг, и был добавлен следующий патч, устраняющий эту проблему. Именно таким образом и должен работать процесс разработки ПО с открытым исходным кодом, и мне кажется потрясающим, что open source позволяет обычным людям со всего света находить общие цели, создавая отличное ПО, даже несмотря на кажущиеся неразрешимыми политические разногласия.
Если я не ошибаюсь, то отправленные в рамках этого курса патчи стали первым вкладом в open source, сделанным из Северной Кореи; к сожалению, они же стали последними.
На следующий год (2017) я организовал ещё одно путешествие в Северную Корею и должен был привезти с собой ещё несколько преподавателей ПО с открытым исходным кодом, однако президент Трамп запретил американцам посещать Северную Корею. Поэтому мы с другими преподавателями больше не могли встретиться с северокорейскими студентами, и больше никто не мог учить их делать вклад в open source или мотивировать их к этому.
Президент Байден недавно объявил о своей политике «практичной дипломатии» с Северной Кореей. Однако подробности этой политики пока неизвестны, а запрет на посещение сохраняется. Поэтому американцы не смогут воспользоваться тем, что северокорейцы устраняют баги в их коде, а дипломатию науки, которая, по сути, снизила трения между США и СССР, невозможно использовать как инструмент снижения трений между США и Северной Кореей.
VDSina предлагает серверы в аренду под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата.
Подписывайтесь на наш чат в Telegram.
![](https://habrastorage.org/r/w1560/webt/z9/pt/ar/z9ptarc6sq-j36_r3iugpra4ojw.png)
![](https://habrastorage.org/webt/ra/s1/k1/ras1k127mcnfysmsw2tnc7qzjko.jpeg)
В рамках курса студенты должны были опубликовать патчи для выбранного ими проекта. В этой статье я расскажу о том, как два патча были внесены в популярные библиотеки машинного обучения mlpack и vowpal wabbit. Я считаю, что эти примеры подчёркивают, что научное сотрудничество между северокорейцами и американцами может принести выгоду обычным гражданам обеих стран и улучшить дипломатические взаимоотношения.
Патч mlpack
Один из студентов работал над «системой распознавания транспортных средств на основе зрения» для своей магистерской дипломной работы. В этой задаче у нас есть трансляция с видеокамеры, установленной недалеко от дороги. Цель заключается в подсчёте количества проезжающих легковых и грузовых автомобилей. Это довольно стандартная задача машинного зрения, которую регулярно реализуют студенты всего мира, её выходные данные выглядят примерно так:
![](https://habrastorage.org/webt/fi/by/a4/fibya4yoae8z77u9uecv5w8xuhk.gif)
(К сожалению, это изображение взято не из проекта студента, а из 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. Допустим, у нас есть такой твит:
![](https://habrastorage.org/webt/8i/ul/qb/8iulqbo7utnejjtgv0k7vmgrpku.png)
и нам нужно классифицировать твит, как имеющий положительное или отрицательное отношение к его теме. Например, в показанном выше твите есть отрицательное отношение к саммиту в Сингапуре 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.
![](https://habrastorage.org/webt/z9/pt/ar/z9ptarc6sq-j36_r3iugpra4ojw.png)