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

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

Исследовательская среда:

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

Исследовательская среда — это место, где специалисты по ИИ определяют эксперименты и могут использовать такие инструменты, как Jupyter Notebook и Jupyter Lab, для сбора данных, их очистки, выполнения исследовательского анализа данных (EDA) и представления результатов команде. Результаты каждого эксперимента могут помочь выбрать и создать новые функции из данных и построить модели, которые потенциально могут решить проблему. Позже определяются показатели для оценки и выбора моделей в различных экспериментах. Иногда ансамбль моделей из разных экспериментов может привести к более высокой производительности. Код может быть очень грязным в этой среде или фазе. Другим также может быть сложно успешно воспроизвести ваш код на своих машинах.

Различные этапы исследовательской среды включают

  1. Определение экспериментов. Различные эксперименты могут быть определены на основе определения проблемы. Например, предположим, что у нас есть проблема классификации. В этом случае эксперименты могут быть определены на основе различных подходов, таких как обычное обучение с учителем, слабое активное обучение с учителем, частичное обучение с учителем, предварительное обучение и т. д. Приоритет экспериментов определяется в зависимости от типа, графика проекта, количества и качества данных. .
  2. Сбор данных. Для определенного эксперимента специалист по искусственному интеллекту может собирать структурированные или неструктурированные данные из существующих проприетарных баз данных, использовать наборы данных с открытым исходным кодом или извлекать данные с помощью скриптов Python, таких как сканирование текста или изображений с соответствующих веб-сайтов.
  3. Очистка данных.Этапы очистки зависят от данных, проблемы и эксперимента. Например, специалисты по искусственному интеллекту могут вводить пропущенные значения, нормализовать экстремальные значения, удалять повторяющиеся выборки и т. д. для классификации структурированных данных.
  4. Исследовательский анализ данных (EDA): цель EDA — найти закономерности в очищенных данных, что помогает выбрать соответствующие функции для моделирования и понимания взаимосвязей между ними. EDA также может помочь определить, как дополнительно очищать данные для моделирования.
  5. Разработка функций. Знания экспертов в предметной области и шаблоны EDA помогают специалистам по искусственному интеллекту создавать новые функции, которые могут повысить производительность моделей в эксперименте. Короче говоря, создание соответствующих новых функций из существующих функций называется проектированием функций.
  6. Моделирование данных. Цель модели — попытаться воспроизвести процесс принятия решений экспертами в предметной области. Специалисты по искусственному интеллекту разрабатывают математические алгоритмы и строят модели, используя соответствующие функции для автоматизации процесса принятия решений.
  7. Настройка и оценка. Можно найти оптимальные гиперпараметры для максимизации производительности модели путем сравнения показателей каждой версии модели в эксперименте с оценочными данными.
  8. Отслеживание и оценка экспериментов. Шаги 2–7 повторяются для каждого эксперимента и оцениваются в конце. Инструменты отслеживания экспериментов, такие как Neptune AI и Weights and Biases, могут эффективно отслеживать информацию об экспериментах с помощью удобного пользовательского интерфейса.

Модель в эксперименте с наибольшей производительностью выбирается для дальнейшей работы в среде разработки.

Среда разработки:

Среда разработки — это среда, в которой специалисты по искусственному интеллекту создают компоненты, очищая и разбивая на модули код из блокнотов Jupyter, добавляя зависимости (PyTorch, Numpy, Pandas и т. д.) и упаковывая их. Компонент — это организованный, модульный, поддерживаемый и повторно используемый код, который выполняет один шаг, как извлечение данных в конвейере AI/ML.

В прикладном машинном обучении конвейер AI/ML автоматизирует выполнение последовательности шагов в компонентах и ​​взаимодействие между компонентами, определенными в дизайне системы AI/ML. Компоненты включают сбор данных, предварительную обработку данных, разработку и тонкую настройку модели, постобработку прогнозов, оценку модели, развертывание модели, обслуживание и мониторинг.

Некоторые рекомендации по упаковке кода:

  1. Создайте репозиторий GIT, чтобы определить структуру репозитория кода и стратегию ветвления.
  2. Установите IDE, например PyCharm, чтобы автоматически создавать виртуальные среды для проектов и обеспечивать простую интеграцию с GIT.
  3. Преобразуйте код Jupyter Notebook в объектно-ориентированный код и сохраните его в файлах .py. Имейте соответствующие имена переменных, добавляйте комментарии и организуйте различные файлы в компоненты с правильной иерархией.
  4. Создавайте файлы конфигурации, содержащие стандартную информацию для нескольких компонентов, такую ​​как расположение входного файла, расположение модели, расположение выходного файла, облачные или внешние учетные данные API, значения параметров модели, значения гиперпараметров и т. д. Файлы конфигурации упрощают добавление новых переменных для всех компонентов конвейера и изменение и удаление существующих переменных.
  5. Напишите и автоматизируйте тесты для нескольких компонентов. Напишите модули для тестирования каждого компонента по отдельности (модульное тестирование) и проверки взаимодействия между компонентами (интеграционное тестирование).
  6. Используйте регистратор для регистрации сообщения и времени. Ведение журнала упрощает отладку, особенно когда база кода становится огромной и сложной. Сообщение журнала может иметь уровень ведения журнала, например критический, ошибка, предупреждение, информация, отладка или не установлено. Критическое — это важное сообщение для регистрации, а notset — неважное сообщение для регистрации. Уровни обеспечивают минимальный уровень для регистрации. Например, если вы установите «level = logging. предупреждение», любое сообщение, зарегистрированное как критическое, ошибка или предупреждение, регистрируется только в журнале, а другие уровни игнорируются.
  7. Контроль версий играет решающую роль в среде разработки. В отличие от традиционной разработки программного обеспечения, при которой отслеживаются только изменения в коде (версия кода), данные, используемые для обучения, тестирования и оценки, также можно отслеживать (версия данных), особенно если данные большие и динамичные. DVC, Delta Lake и LakeFS — это некоторые инструменты управления версиями данных с открытым исходным кодом.
  8. Часто в зависимости от требований сервер создается с использованием веб-фреймворков, таких как FastAPI, Flask или Django, для предоставления прогнозов другим программным компонентам.

Упакованный код далее используется в производственной среде.

Производственная среда:

В зависимости от размера и графика проекта среды разработки и производства могут быть одинаковыми или разными. Как правило, производственная среда — это этап, на котором модели в конвейере масштабируются, отслеживаются и обслуживаются контейнерами в режиме реального времени.

Некоторые задачи, выполняемые в производственной среде:

  1. Оптимизация дизайна. В целом существует большой разрыв между количеством моделей и качеством моделей в исследовательской среде, среде разработки и производственной среде. Следовательно, при необходимости дизайн системы AI/ML, созданный ранее в среде разработки, необходимо оптимизировать и перепроектировать для производства.
  2. Контейнеризация с использованием Docker. Разработчики могут использовать несколько компонентов, таких как Data Extractor, Elastic Search, Rest API, очереди обмена сообщениями и т. д. У каждого компонента есть соответствующие библиотеки зависимостей. Наличие компонентов с разными версиями библиотеки в одной среде может привести к конфликту. С помощью Docker специалисты по ИИ могут стандартизировать среды и запускать разные контейнеры для разных компонентов изолированно, где каждый контейнер имеет зависимые библиотеки для соответствующего компонента. Среда может быть создана Docker с помощью DockerFile. DockerFile содержит такие инструкции, как переход к соответствующей папке, установка зависимостей, настройка переменных среды, загрузка параметров конфигурации для модели и т. д. Масштабирование с помощью контейнеров упрощается, поскольку специалисты по искусственному интеллекту могут создавать новые контейнеры для одного и того же компонента за считанные секунды, чтобы удовлетворить требования масштабирования. .
  3. Оркестрация рабочего процесса и абстракция инфраструктуры.Инструменты оркестровки рабочего процесса, такие как Kubernetes от Google и Openshift от Red Hat, могут быстро запускать несколько контейнеров на разных компьютерах по запросу, управлять ресурсами, такими как память и вычислительные ресурсы для контейнеров, обеспечивать высокую доступность контейнеров для продукт. В зависимости от организации инфраструктура инструмента оркестрации рабочих процессов принадлежит отдельным командам, таким как DevOps, или самим специалистам по искусственному интеллекту. Некоторым специалистам по ИИ может показаться утомительным работать с инструментами абстракции инфраструктуры. Они могут использовать инструменты абстрагирования инфраструктуры, такие как Kubeflow от Google и Metaflow от Netflix, которые построены на основе инструментов оркестрации рабочих процессов, что позволяет им больше сосредоточиться на моделях и перестать беспокоиться о низкоуровневой инфраструктуре.
  4. Непрерывная интеграция и непрерывная доставка (CI/CD). CI/CD позволяет специалистам по ИИ работать вместе в общем репозитории кода, где обновления части кода автоматически отправляются, создаются, тестируются и доставлены и развернуты в общем репозитории кода, а проблемы с кодом можно отслеживать и решать соответственно.
  5. Мониторинг и обслуживание развернутых моделей. В отличие от традиционного программного обеспечения, модели AI/ML динамичны и со временем ухудшаются. Следовательно, важно измерять, отслеживать и управлять различными показателями и настраивать модели, прежде чем они негативно повлияют на взаимодействие с пользователем и ценность для бизнеса.

В целом, работоспособность модели можно измерить тремя разными метриками.

а. Метрики ресурсов: измеряет входящий трафик, использование или использование памяти ЦП/ГП (эффективно ли сервер использует ресурсы?), прогнозируемую задержку (быстро ли сервер обрабатывает запросы?), пропускную способность (поддерживает ли сервер хорошую пропускную способность и масштабируется на основе запросы?) и стоимость (соответствуют ли затраты на хостинг и логические выводы всего конвейера машинного обучения или увеличились?).

б. Метрики данных: важно сначала проверить правильность формата входных данных, а не отлаживать весь конвейер.

  1. Проверка аномалий. Простые проверки, такие как максимальное и минимальное значения для каждой функции (возраст не может быть отрицательным или равным 100 000), могут выявить и подтвердить экстремальные или аномальные точки данных во входных данных. Позже команда может провести мозговой штурм и найти основные причины получения этих аномалий от пользователей.
  2. Проблемы с качеством данных. Пользователи могут указывать синонимы («Девушка» вместо «Женщина») или неверные значения («Почта» вместо «Мужчина») в качестве входных данных для конвейера. В этих случаях модель может не распознать значение признака «Пол» (данные могут отсутствовать при обучении модели) и присвоить признаку NaN. Несмотря на то, что модель не ломается, предсказания, сделанные моделью, могут быть неверными. Следовательно, важно тестировать новые данные, которых модель раньше не видела.
  3. Дрейф данных. Когда мы обучаем модель с некоторыми статическими данными, она предполагает определенные шаблоны, основанные на распределении предоставленных данных. Однако реальные данные являются динамическими. Из-за этих изменений допущения, сделанные моделью, могут стать недействительными, и модель может стать предвзятой, что приведет к снижению производительности при оценке модели в реальном времени. Например, потребление воды в больницах во время COVID-19 очень велико по сравнению с историческими данными. Следовательно, мы не можем использовать модель, построенную на исторических данных о потреблении воды во время COVID-19. Это явление называется «Дрейф данных». Периодическое обнаружение изменений в распределении данных с помощью статистических тестов может помочь обнаружить дрейф данных.

в. Показатели модели. Крайне важно определить ожидаемую производительность моделей перед их развертыванием в рабочей среде и периодически проверять соответствие ожидаемым KPI. Если прогнозы модели или ожидаемые значения KPI не соответствуют эталонным показателям, специалисты по ИИ могут столкнуться с проблемой дрейфа модели. Дрейф модели — это явление, при котором отношения между функциями меняются, и модель больше не дает точных прогнозов. Например, соотношение между рождаемостью и коэффициентом смертности изменилось во время COVID-19, что привело к дрейфу моделей. Дрейф модели можно обнаружить путем периодического анализа отзывов из циклов обратной связи и сопоставления с тем, что влияет на бизнес.

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

Вывод:

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

Добавьте меня в LinkedIn. Спасибо!