Машинное обучение, Глубокое обучение

Мои инструменты для повышения производительности разработки моделей машинного обучения

Сосредоточен на разработке машинного обучения в тексте

Всем привет, добро пожаловать в статью о моем медиуме. В этой статье я хочу рассказать об инструментах, которые я использую при разработке моделей машинного обучения (ML) на основе моего опыта. В частности, я сосредоточусь на некоторых инструментах проекта естественного языка (NLP), поскольку в настоящее время я в основном занимаюсь проектами NLP.

Вступление

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

Другая проблема связана с возможностью повторного использования кода. Я, выпускник со степенью в области компьютерных наук, забочусь о возможности повторного использования кода. Когда я хочу масштабировать предыдущую модель машинного обучения, у меня часто возникают проблемы с расширением кода. В конце концов, я переписываю код, чтобы он был аккуратнее. Опять же, это заняло много времени.

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

Эта статья может быть вам интересна тем, кто хочет повысить продуктивность разработки моделей машинного обучения, особенно в области НЛП. Обратите внимание, что они соответствуют моим предпочтениям и могут не подходить для вас. Эти инструменты можно использовать бесплатно.

Я сфокусируюсь на том, чтобы этот список фокусировался на разработке модели, а не на развертывании.

Оглавление

  1. Вступление
  2. Интегрированная среда разработки (IDE)
  3. Библиотеки машинного обучения
  4. Библиотеки обработки текста НЛП
  5. Библиотеки исследования данных
  6. Регистратор экспериментов и инструменты оптимизации гиперпараметров
  7. Управление версиями
  8. Заключение

Интегрированная среда разработки (IDE)

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

PyCharm

Почему я использую Pycharm?

При разработке кода я обычно использую объектно-ориентированное программирование (ООП), чтобы сделать код многоразовым и следовать принципу DRY. Когда я создаю класс для чего-то (например, моделей глубокого обучения), Pycharm может помочь мне определить нужную мне функцию с помощью своей документации. Мне это очень помогает при разработке кода. Помимо этого, у него есть предупреждение о стиле кода, которое очень помогает мне сделать мой код более аккуратным. Pycharm также делает мой код менее подверженным ошибкам. Без этих подсказок об ошибках мне могло бы потребоваться больше времени, чтобы код заработал.

Когда использовать Pycharm?

  • Разработка кода ООП (классификация).
  • Разработка сложного модуля, у которого есть несколько зависимостей.

Код Visual Studio

Почему я использую Visual Studio Code?

Я использую Visual Studio Code, где код, который я хочу разработать, не слишком сложен (например, написание нескольких функций очистки данных). Я обнаружил, что Visual Studio Code легче, чем Pycharm (на моем ПК), если брать мой процессор и оперативную память. К сожалению, у него нет лучшей проверки ошибок, чем Pycharm. Хотя в некоторых случаях это все еще полезно, например, для указания на отсутствие объявления переменной. Что мне нравится в использовании Visual Studio Code, когда возникает конфликт слияния при использовании Git. Он выделяет мой код, где находится конфликт, и я могу принять меры. На мой взгляд, у него лучший пользовательский интерфейс (UX), чем у Pycharm (с моей точки зрения), когда я делаю некоторое управление версиями кода и выполняю удаленный код (ssh на удаленный сервер).

Когда использовать Visual Studio Code?

  • Небольшая поправка в моем коде
  • Разработайте небольшой код (например, напишите функцию)
  • Быстро проверьте исходный код. Открытие Pycharm занимает больше времени, чем Visual Studio Code.

JupyterLab

Почему я использую JupyterLab?

Jupyter Lab, интерфейс для ноутбуков нового поколения от Jupyter, является популярной IDE в сообществе Data Science. Он имеет красивый интерфейс и прост в использовании. Я хочу подчеркнуть его функцию живого кода, где вы можете кодировать и видеть результат. Он также может выводить визуализацию графика, которая мне иногда нужна для исследовательских данных и анализа (EDA).

Я использую JupyterLab, когда занимаюсь EDA. Например, анализируя текст, я иногда рисую частоту их слов и показываю результат. Я также использую Jupyterlab в качестве кода для игровой площадки. Когда я разрабатываю модель глубокого обучения, я часто создаю слой каждой модели шаг за шагом и проверяю вывод модели в записной книжке (файл jupyterLab). Я разделяю каждый слой модели и проверяю, верен ли результат. Когда я считаю, что код правильный, я помещаю его в файл «.py», используя другую среду IDE, чтобы уменьшить ошибку кода.

Я избегаю писать в блокноте свой код многократного использования. По словам Джоэла Груса, бывшего старшего научного сотрудника AllenNLP, он отметил, что в его слайде« Я ненавижу записную книжку , воспроизводимость записной книжки меньше. Вот почему при разработке исполняемого кода, который можно использовать повторно, я пишу их в модуле, чтобы люди могли легко использовать мой код для обучения или тестирования модели.

Когда использовать JupyterLab?

  • Площадка для тестирования кода
  • Данные EDA и выходные результаты модели

Библиотеки машинного обучения

Это некоторые библиотеки, которые я использую при создании и обучении модели.

Scikit-learn

Почему я использую scikit-learn?

Популярная и обязательная библиотека, если я разрабатываю классическую модель машинного обучения на Python. Он прост в использовании и в основном охватывает несколько алгоритмов поверхностного машинного обучения, которые я обычно использую. Он также предоставляет несколько материалов для предварительной обработки, таких как TfIdfVectorizer (обработка текста с использованием алгоритма TF-IDF), MinMaxScaling (числовое масштабирование) и train_test_split (разбиение данных на тест на поезд), что упрощает мою жизнь.

Вместо того, чтобы кодировать модель с нуля, я могу использовать эту библиотеку.

Когда использовать scikit-learn?

  • Разработайте классическую / мелкую модель
  • Обработка данных
  • Разделение поезд, проверка, тест

Пайторч

Почему я использую Pytorch?

Моя основная причина использования Pytorch, потому что Pytorch является Pytorch и его легко изучить. Это также популярная платформа глубокого обучения с открытым исходным кодом, которая активно разрабатывается сообществом. Благодаря поддержке динамического графа я могу легко отлаживать свой код. Сообщество создает множество расширений, чтобы сделать его продуктивным при разработке с использованием Pytorch. Благодаря простоте использования Pytorch я могу быстро построить прототип модели.

Когда использовать Pytorch?

  • Разработка модели глубокого обучения
  • Экспериментируем с архитектурой какой-то модели

Pytorch Lightning

Почему я использую Pytorch Lightning?

Pytorch Lightning - это оболочка Pytorch для упорядочивания кода. При разработке модели Pytorch я обнаружил это, когда часто делаю неорганизованный код. Когда я исследую модель, я обычно сосредотачиваюсь на правильности кода, а не на его чистоте. Это делает код беспорядочным и трудно масштабируемым. Более того, когда я занимаюсь другими проектами по разработке моделей, я часто вижу в коде некую «закономерность», которую, как мне казалось, не следует кодировать повторно.

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

Когда использовать Pytorch Lightning?

  • Когда я разрабатываю глубокое обучение с помощью Pytorch, я оборачиваю код с помощью этой библиотеки.

Трансформеры HuggingFace

Почему я использую трансформеры HuggingFace?

Трансформеры Hugginface облегчают мне жизнь при разработке модели НЛП на основе трансформера. При загрузке предварительно обученной модели я могу легко ввести название модели, и она будет загружена и загружена автоматически. После загрузки модели я могу обучить ее или настроить ее в соответствии со своими потребностями.

Я часто оборачиваю предварительно обученную модель HuggingFace в модуль Pytorch Lightning.

Когда использовать трансформеры HuggingFace?

  • Разработка модели НЛП с глубоким обучением на основе трансформатора

Библиотеки обработки текста НЛП

Это некоторые библиотеки, которые я использую для предварительной обработки текстовых данных.

Пространство

Почему я использую Spacy?

В основном я использую Spacy для токенизации моего текста для предварительной обработки моего текста. Я использую spacy, чтобы легко извлекать некоторые текстовые функции, такие как часть речи и лемматизация слова.

Когда использовать Spacy?

  • Извлечение текстовых функций
  • Токенизация текста

НЛТК

Почему я использую NLTK?

Похоже на Spacy. Я использую функции, недоступные в Spacy, такие как токенизация текста Twitter.

Когда использовать NLTK?

  • Извлечение текстовых функций
  • Токенизация текста

Токенизаторы HuggingFace

Почему я использую токенизаторы HuggingFace?

При разработке модели НЛП иногда мы хотим попробовать алгоритм токенизатора вложенных слов (например, «есть → [« есть »-« инг »]). Я использую эту библиотеку для представления вложенных слов. С помощью этой библиотеки я могу обучить токенизатор и использовать его как токенизатор. Он разработан на Rust, поэтому работает быстро.

Когда использовать токенизаторы HuggingFace?

  • Токенизация подслова

Регистратор экспериментов и инструменты оптимизации гиперпараметров

Это некоторые инструменты, которые я использую для регистрации и настройки при разработке модели.

WANDB

Почему я использую WandB?

Я просто использую WandB, потому что считаю их простыми в использовании при регистрации моего эксперимента. WandB также можно легко интегрировать, когда я использую Pytorch Lightning. Это очень помогает мне в ведении журнала и визуализации результатов моего эксперимента. С WANDB я могу отследить свой старый эксперимент. Мне нравится простой интерфейс для сбора журнала экспериментов.

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

Когда мне использовать WandB?

  • Запись эксперимента
  • Оптимизация гиперпараметров

Управление версиями

Это некоторые инструменты, которые я использую для создания версий своего кода, данных и модели.

Git

Почему я использую Git?

Когда я разрабатываю исходный код, я проверяю версии своего кода, чтобы его можно было отслеживать. Поскольку я часто работаю вместе с другими, git может упростить совместную работу. Даже когда я занимаюсь собственным проектом, я также обычно использую git для версии своего кода.

Когда мне использовать Git?

  • Когда я делаю исходный код проекта.
  • Сотрудничать с другими.

DVC

Почему я использую DVC?

Чтобы сделать эксперимент с моделью воспроизводимым, я также контролирую версии данных и модели для каждой фиксации в Git. Вариант использования Git не подходит для обработки больших файлов (вывода модели или данных), поэтому мне нужны другие инструменты. Один из инструментов, который я использую для создания версий больших файлов, - это DVC. Я могу указать, где я могу хранить файл, например, виртуальный частный сервер, облачное хранилище Google и даже Google Диск. Я могу отправить их в хранилище и вытащить их в соответствии с версией фиксации в репозитории git.

Когда мне использовать DVC?

  • Создайте проект машинного обучения при использовании большого файла.

Библиотеки исследования данных

Это некоторые инструменты, которые я использую для обработки и анализа данных.

Панды

Почему я использую панды?

Я использую панды для управления и анализа данных, которые будут использоваться для обучения модели машинного обучения. При выполнении EDA я всегда использую pandas для просмотра данных в соответствии с моим любопытством. Я также использую панд для обработки и очистки данных. Более того, библиотека pandas проста и гибка в использовании.

При анализе данных я иногда строю их с помощью matplotlib, который можно вызвать с помощью функции .plot в фрейме данных pandas. Если мне нужен нарядный, я использую для этого Plotly.

Когда мне использовать панды?

  • Очистка и предварительная обработка данных
  • Анализ и визуализация данных

Заключение

Это несколько инструментов, которые я часто использую при разработке моделей машинного обучения. Обратите внимание, что эти инструменты выбираются только на основании моих предпочтений. Могут быть некоторые инструменты, которые вам не подходят. У каждого свой вкус к повышению производительности. Если вы хотите предложить несколько хороших инструментов для повышения производительности, вы можете поделиться ими в разделе комментариев 😉.

Спасибо, что прочитали мою статью. Надеюсь, моя статья будет вам полезна 🙂. Увидимся в моей следующей статье!