Как стать автором
Обновить
4
0
Смирнова Екатерина @smekur

Компьютерный лингвист

Отправить сообщение

Распределённое глубокое обучение: параллелизм моделей и данных в TensorFlow

Время на прочтение12 мин
Количество просмотров6K

Значительное количество задач, предусматривающих обучение глубоких нейронных сетей, можно решить на отдельном компьютере, обладающем единственным, сравнительно мощным и быстрым GPU. Но бывает так, что нужно что-то помощнее. Например — данные могут просто не поместиться в память, доступную на отдельной машине. Или окажется, что имеющееся «железо» просто не «потянет» некую задачу. В результате может возникнуть необходимость в горизонтальном масштабировании вычислительных мощностей.

«Горизонтальное масштабирование» — это когда в компьютер добавляют дополнительные GPU, или когда используют несколько машин, входящих в состав кластера. При таком подходе нужен какой-то способ эффективного распределения задач обучения моделей по имеющимся системам. В теории всё просто, но в реальной жизни это — задача нетривиальная. На самом деле — существует несколько стратегий организации распределённого обучения. Выбор конкретной стратегии сильно зависит от конкретной задачи, от данных и от модели.

В этом материале я попытаюсь описать существующие стратегии организации распределённого обучения, раскрыв детали необходимые для того, чтобы читатель смог бы получить общее представление о них. Нашей главной целью будет обретение возможности выбора наилучшей из стратегий для конкретной задачи. Тут я продемонстрирую некоторые примеры кода, основанные на библиотеке TensorFlow. Освоив их, вы разберётесь с тем, как именно устроена программная часть рассматриваемых здесь стратегий распределённого обучения. Но, в любом случае, затрагиваемые здесь концепции применимы не только к TensorFlow, но и к другим библиотекам и фреймворкам глубокого обучения.

Эта публикация входит в серию материалов о глубоком обучении. В предыдущих статьях шла речь о создании собственного цикла обучения для задачи по сегментации изображений с помощью U-net. Мы развернули модель в Google Cloud для того чтобы получить возможность удалённого запуска обучения. Здесь я буду использовать тот же код.

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии1

Развертывание ML модели в Docker с использованием Flask (REST API) + масштабирование нагрузки через Nginx балансер

Время на прочтение5 мин
Количество просмотров15K

Как известно настройка и обучение моделей машинного обучения это только одна из частей цикла разработки, не менее важной частью является развертывание модели для её дальнейшего использования. В этой статье я расскажу о том, как модель машинного обучения может быть развернута в виде Docker микросервиса, а также о том, как можно распараллелить работу микросервиса с помощью распределения нагрузки в несколько потоков через Load balancer. В последнее время Docker набрал большую популярность, однако здесь будет описан только один из видов стратегий развертывания моделей, и в каждом конкретном случае выбор лучшего варианта остаётся за разработчиком.


Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии9

Искусственный интеллект впервые создаст корпус древнеславянских рукописных текстов

Время на прочтение3 мин
Количество просмотров4.6K
image

«Во дни сомнений, во дни тягостных раздумий о судьбах Родины», которые особенно тяжки в последние недели, что для нас поддержка и опора? :) Правильно, великий и могучий. И пока курсы валют и пандемия неумолимо владеют массовым сознанием, ученые не прекращают работу. О том, кто и зачем создаст корпус — уникальную «СУБД» древнеславянских рукописей — в нашей новости.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии17

Нейрозапятые, или как мы оставили своих редакторов без работы (ну почти)

Время на прочтение9 мин
Количество просмотров9.5K

Всем привет, меня зовут Владислав Соболев – ML-инженер в компании “БАРС Груп”. Сегодня я хотел бы рассказать о том, зачем и как мы расставляем знаки препинания в текстах, сравним аналоги, и посмотрим на то, как устроена работа инструмента, который мы написали, чтобы обучать такого рода модели (ссылочка в самом конце). Начнем!

У нас в компании есть ряд ML-проектов, внутри которых используется анализ текста, в том числе и надиктованного голосом. Мы командой долго думали над тем, как можно реализовать данные проекты.

В итоге пришли к выводу, что проще всего для наших целей проводить лингвистический анализ текста искать в нём слова-действия, такие как "сгруппируй", "покажи", определять связи и зависимости между словами, искать ключевые слова, ранжировать их. И на основе всех этих данных – взаимодействовать с сервисами.

Читать далее
Всего голосов 17: ↑15 и ↓2+13
Комментарии7

Маленький и быстрый BERT для русского языка

Время на прочтение9 мин
Количество просмотров55K

BERT – нейросеть, способная неплохо понимать смысл текстов на человеческом языке. Впервые появившись в 2018 году, эта модель совершила переворот в компьютерной лингвистике. Базовая версия модели долго предобучается, читая миллионы текстов и постепенно осваивая язык, а потом её можно дообучить на собственной прикладной задаче, например, классификации комментариев или выделении в тексте имён, названий и адресов. Стандартная версия BERT довольно толстая: весит больше 600 мегабайт, обрабатывает предложение около 120 миллисекунд (на CPU). В этом посте я предлагаю уменьшенную версию BERT для русского языка – 45 мегабайт, 6 миллисекунд на предложение. Она была получена в результате дистилляции нескольких больших моделей. Уже есть tinybert для английского от Хуавея, есть моя уменьшалка FastText'а, а вот маленький (англо-)русский BERT, кажется, появился впервые. Но насколько он хорош?

Читать далее
Всего голосов 57: ↑57 и ↓0+57
Комментарии17

Bash-скрипты: начало

Время на прочтение11 мин
Количество просмотров1.7M
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

Сегодня поговорим о bash-скриптах. Это — сценарии командной строки, написанные для оболочки bash. Существуют и другие оболочки, например — zsh, tcsh, ksh, но мы сосредоточимся на bash. Этот материал предназначен для всех желающих, единственное условие — умение работать в командной строке Linux.


Читать дальше →
Всего голосов 69: ↑61 и ↓8+53
Комментарии123

О machine learning: никто машину не обучает

Время на прочтение15 мин
Количество просмотров8.8K

Занимаясь многолетним научно-техническим переводом все чаще приходится сталкиваться с ситуациями, когда терминологическая идиоматика источника идет вразрез с принятыми у нас в обиходе понятиями, и что для того чтобы сохранить идиоматику источника нетронутой с целью донести до читателя смысл и стилистику неискаженными в том виде, в котором данный предмет изложения воспринимается за рубежом, приходится преодолевать кучу барьеров, главный из которых можно услышать из уст редактора издательства:

Читать далее
Всего голосов 54: ↑35 и ↓19+16
Комментарии252

GPT-2 в картинках (визуализация языковых моделей Трансформера)

Время на прочтение18 мин
Количество просмотров29K

openAI-GPT-2-3


В 2019 году мы стали свидетелями блистательного использования машинного обучения. Модель GPT-2 от OpenAI продемонстрировала впечатляющую способность писать связные и эмоциональные тексты, превосходящие наши представления о том, что могут генерировать современные языковые модели. GPT-2 не является какой-то особенно новой архитектурой – она очень напоминает Трансформер-Декодер (decoder-only Transformer). Отличие GPT-2 в том, что это поистине громадная языковая модель на основе Трансформера, обученная на внушительном наборе данных. В этой статье мы посмотрим на архитектуру модели, позволяющую добиться таких результатов: подробно рассмотрим слой внутреннего внимания (self-attention layer) и применение декодирующего Трансформера для задач, выходящих за рамки языкового моделирования.

Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

BERT, ELMO и Ко в картинках (как в NLP пришло трансферное обучение)

Время на прочтение11 мин
Количество просмотров46K

2018 год стал переломной точкой для развития моделей машинного обучения, направленных на решение задач обработки текста (или, что более корректно, обработки естественного языка (Natural Language Processing, NLP)). Быстро растет концептуальное понимание того, как представлять слова и предложения для наиболее точного извлечения их смысловых значений и отношений между ними. Более того, NLP-сообщество продвигает невероятно мощные инструменты, которые можно бесплатно скачать и использовать в своих моделях и пайплайнах. Эту переломную точку также называют NLP’s ImageNet moment, ссылаясь на тот момент несколько лет назад, когда схожие разработки значительно ускорили развитие машинного обучения в области задач компьютерного зрения.


transformer-ber-ulmfit-elmo


(ULM-FiT не имеет ничего общего с Коржиком, но что-то лучше не пришло в голову)

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии2

Визуализируя нейронный машинный перевод (seq2seq модели с механизмом внимания)

Время на прочтение5 мин
Количество просмотров43K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)" автора Jay Alammar.


Sequence-to-sequence модели (seq2seq) – это модели глубокого обучения, достигшие больших успехов в таких задачах, как машинный перевод, суммаризация текста, аннотация изображений и др. Так, например, в конце 2016 года подобная модель была встроена в Google Translate. Основы же seq2seq моделей были заложены еще в 2014 году с выходом двух статей — Sutskever et al., 2014, Cho et al., 2014.


Чтобы в достаточной мере понять и затем использовать эти модели, необходимо сначала прояснить некоторые понятия. Предложенные в данной статье визуализации будут хорошим дополнением к статьям, упомянутым выше.


Sequence-to-sequence модель – это модель, принимающая на вход последовательность элементов (слов, букв, признаков изображения и т.д.) и возвращающая другую последовательность элементов. Обученная модель работает следующим образом:


Всего голосов 15: ↑14 и ↓1+13
Комментарии2

Transformer в картинках

Время на прочтение14 мин
Количество просмотров114K

В прошлой статье мы рассматривали механизм внимания (attention) – чрезвычайно распространенный метод в современных моделях глубокого обучения, позволяющий улучшить показатели эффективности приложений нейронного машинного перевода. В данной статье мы рассмотрим Трансформер (Transformer) – модель, которая использует механизм внимания для повышения скорости обучения. Более того, для ряда задач Трансформеры превосходят модель нейронного машинного перевода от Google. Однако самое большое преимущество Трансформеров заключается в их высокой эффективности в условиях параллелизации (parallelization). Даже Google Cloud рекомендует использовать Трансформер в качестве модели при работе на Cloud TPU. Попробуем разобраться, из чего состоит модель и какие функции выполняет.


Впервые модель Трансформера была предложена в статье Attention is All You Need. Реализация на TensorFlow доступна как часть пакета Tensor2Tensor, кроме того, группа NLP-исследователей из Гарварда создали гид-аннотацию статьи с реализацией на PyTorch. В данном же руководстве мы попробуем максимально просто и последовательно изложить основные идеи и понятия, что, надеемся, поможет людям, не обладающим глубоким знанием предметной области, понять данную модель.

Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии5

О выборе структур данных для начинающих

Время на прочтение18 мин
Количество просмотров173K
image

Часть 1. Линейные структуры


Массив


Когда вам нужен один объект, вы создаёте один объект. Когда нужно несколько объектов, тогда есть несколько вариантов на выбор. Я видел, как многие новички в коде пишут что-то типа такого:

// Таблица рекордов
int score1 = 0;
int score2 = 0;
int score3 = 0;
int score4 = 0;
int score5 = 0;

Это даёт нам значение пяти рекордов. Этот способ неплохо работает, пока вам не потребуется пятьдесят или сто объектов. Вместо создания отдельных объектов можно использовать массив.

// Таблица рекордов
const int NUM_HIGH_SCORES = 5;
int highScore[NUM_HIGH_SCORES] = {0};

Будет создан буфер из 5 элементов, вот такой:



Заметьте, что индекс массива начинается с нуля. Если в массиве пять элементов, то они будут иметь индексы от нуля до четырёх.
Читать дальше →
Всего голосов 42: ↑40 и ↓2+38
Комментарии32

Слово лингвисту: что если компьютеры заговорят лучше нас

Время на прочтение10 мин
Количество просмотров9.7K

Фото: Александр Корольков/РГ

3 июня, в заключительный день Московского книжного фестиваля на Красной площади, лингвист Александр Пиперски выступал с рассказом о компьютерной лингвистике. Он говорил о машинных переводах, нейросетях, векторном отображении слов и поднимал вопросы границ искусственного интеллекта.

Лекцию слушали разные люди. Справа от меня, например, клевала носом китайская туристка. Александр, наверняка, тоже понимал — пара лишних цифр, формул и слов об алгоритмах, и люди убегут в соседнюю палатку слушать фантастов.

Я попросил Александра подготовить для Хабра «режиссерскую версию» лекции, где не вырезано ничего, что может усыпить случайных туристов. Ведь больше всего выступлению не хватало аудитории с толковыми вопросами и вообще хорошей дискуссии. Думаю, здесь мы ее сможем развить.
Читать дальше →
Всего голосов 29: ↑28 и ↓1+27
Комментарии59

Программирование для не-программистов. Биография джуна

Время на прочтение14 мин
Количество просмотров72K
Предисловие: это рассказ о книгах для тех, кто решил изучить программирование самостоятельно. Но поскольку читать список книг было бы скучно, то я решил дополнить его своей биографией.

Итак… Мне за сорок. По образованию лингвист, работаю в научной сфере. С программированием никогда не сталкивался, хотя формально в школе проходил уроки по информатике, которые, собственно, свелись к набору программы на Бэйсике из методички и к лицезрению загадочного ДОСа на компьютере учителя. Ох, да, ещё было очень краткое знакомство с Фокалом, но, опять же, все строго по методичке.

Читать дальше →
Всего голосов 112: ↑106 и ↓6+100
Комментарии130

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирована
Активность