Люди, которые хотят получить навыки, необходимые для таких ролей, как прикладной инженер, аналитик данных, инженер данных, специалист по данным, архитектор решений для данных, инженер по машинному обучению, научный сотрудник и т. много совпадений между этими ролями. Более того, определения ролей и требуемых навыков различны для разных организаций, потому что организации по-разному понимают каждую роль в зависимости от своих требований, организационной культуры и выделенного бюджета.
В этой статье представлены три разные среды для специалистов по искусственному интеллекту и основное внимание уделяется различным задачам и навыкам, необходимым для каждой среды. В целом, хороший специалист по ИИ должен знать основы всех трех сред и быть экспертом в некоторых задачах хотя бы в одной среде. Основываясь на своем интересе и опыте в задачах окружающей среды, они могут в дальнейшем углублять навыки и расширять свой набор навыков. Осведомленность об этих средах может помочь людям избежать путаницы при принятии карьерных решений в мире динамических данных.
Исследовательская среда:
Специалисты по искусственному интеллекту сначала сотрудничают с заинтересованными сторонами и экспертами в предметной области, чтобы определить бизнес-проблему. Они также могут представлять и подтверждать предположения, связанные с проблемой. После определения проблемы и проверки предположений специалисты по ИИ могут приступить к работе в исследовательской среде.
Исследовательская среда — это место, где специалисты по ИИ определяют эксперименты и могут использовать такие инструменты, как Jupyter Notebook и Jupyter Lab, для сбора данных, их очистки, выполнения исследовательского анализа данных (EDA) и представления результатов команде. Результаты каждого эксперимента могут помочь выбрать и создать новые функции из данных и построить модели, которые потенциально могут решить проблему. Позже определяются показатели для оценки и выбора моделей в различных экспериментах. Иногда ансамбль моделей из разных экспериментов может привести к более высокой производительности. Код может быть очень грязным в этой среде или фазе. Другим также может быть сложно успешно воспроизвести ваш код на своих машинах.
Различные этапы исследовательской среды включают
- Определение экспериментов. Различные эксперименты могут быть определены на основе определения проблемы. Например, предположим, что у нас есть проблема классификации. В этом случае эксперименты могут быть определены на основе различных подходов, таких как обычное обучение с учителем, слабое активное обучение с учителем, частичное обучение с учителем, предварительное обучение и т. д. Приоритет экспериментов определяется в зависимости от типа, графика проекта, количества и качества данных. .
- Сбор данных. Для определенного эксперимента специалист по искусственному интеллекту может собирать структурированные или неструктурированные данные из существующих проприетарных баз данных, использовать наборы данных с открытым исходным кодом или извлекать данные с помощью скриптов Python, таких как сканирование текста или изображений с соответствующих веб-сайтов.
- Очистка данных.Этапы очистки зависят от данных, проблемы и эксперимента. Например, специалисты по искусственному интеллекту могут вводить пропущенные значения, нормализовать экстремальные значения, удалять повторяющиеся выборки и т. д. для классификации структурированных данных.
- Исследовательский анализ данных (EDA): цель EDA — найти закономерности в очищенных данных, что помогает выбрать соответствующие функции для моделирования и понимания взаимосвязей между ними. EDA также может помочь определить, как дополнительно очищать данные для моделирования.
- Разработка функций. Знания экспертов в предметной области и шаблоны EDA помогают специалистам по искусственному интеллекту создавать новые функции, которые могут повысить производительность моделей в эксперименте. Короче говоря, создание соответствующих новых функций из существующих функций называется проектированием функций.
- Моделирование данных. Цель модели — попытаться воспроизвести процесс принятия решений экспертами в предметной области. Специалисты по искусственному интеллекту разрабатывают математические алгоритмы и строят модели, используя соответствующие функции для автоматизации процесса принятия решений.
- Настройка и оценка. Можно найти оптимальные гиперпараметры для максимизации производительности модели путем сравнения показателей каждой версии модели в эксперименте с оценочными данными.
- Отслеживание и оценка экспериментов. Шаги 2–7 повторяются для каждого эксперимента и оцениваются в конце. Инструменты отслеживания экспериментов, такие как Neptune AI и Weights and Biases, могут эффективно отслеживать информацию об экспериментах с помощью удобного пользовательского интерфейса.
Модель в эксперименте с наибольшей производительностью выбирается для дальнейшей работы в среде разработки.
Среда разработки:
Среда разработки — это среда, в которой специалисты по искусственному интеллекту создают компоненты, очищая и разбивая на модули код из блокнотов Jupyter, добавляя зависимости (PyTorch, Numpy, Pandas и т. д.) и упаковывая их. Компонент — это организованный, модульный, поддерживаемый и повторно используемый код, который выполняет один шаг, как извлечение данных в конвейере AI/ML.
В прикладном машинном обучении конвейер AI/ML автоматизирует выполнение последовательности шагов в компонентах и взаимодействие между компонентами, определенными в дизайне системы AI/ML. Компоненты включают сбор данных, предварительную обработку данных, разработку и тонкую настройку модели, постобработку прогнозов, оценку модели, развертывание модели, обслуживание и мониторинг.
Некоторые рекомендации по упаковке кода:
- Создайте репозиторий GIT, чтобы определить структуру репозитория кода и стратегию ветвления.
- Установите IDE, например PyCharm, чтобы автоматически создавать виртуальные среды для проектов и обеспечивать простую интеграцию с GIT.
- Преобразуйте код Jupyter Notebook в объектно-ориентированный код и сохраните его в файлах .py. Имейте соответствующие имена переменных, добавляйте комментарии и организуйте различные файлы в компоненты с правильной иерархией.
- Создавайте файлы конфигурации, содержащие стандартную информацию для нескольких компонентов, такую как расположение входного файла, расположение модели, расположение выходного файла, облачные или внешние учетные данные API, значения параметров модели, значения гиперпараметров и т. д. Файлы конфигурации упрощают добавление новых переменных для всех компонентов конвейера и изменение и удаление существующих переменных.
- Напишите и автоматизируйте тесты для нескольких компонентов. Напишите модули для тестирования каждого компонента по отдельности (модульное тестирование) и проверки взаимодействия между компонентами (интеграционное тестирование).
- Используйте регистратор для регистрации сообщения и времени. Ведение журнала упрощает отладку, особенно когда база кода становится огромной и сложной. Сообщение журнала может иметь уровень ведения журнала, например критический, ошибка, предупреждение, информация, отладка или не установлено. Критическое — это важное сообщение для регистрации, а notset — неважное сообщение для регистрации. Уровни обеспечивают минимальный уровень для регистрации. Например, если вы установите «level = logging. предупреждение», любое сообщение, зарегистрированное как критическое, ошибка или предупреждение, регистрируется только в журнале, а другие уровни игнорируются.
- Контроль версий играет решающую роль в среде разработки. В отличие от традиционной разработки программного обеспечения, при которой отслеживаются только изменения в коде (версия кода), данные, используемые для обучения, тестирования и оценки, также можно отслеживать (версия данных), особенно если данные большие и динамичные. DVC, Delta Lake и LakeFS — это некоторые инструменты управления версиями данных с открытым исходным кодом.
- Часто в зависимости от требований сервер создается с использованием веб-фреймворков, таких как FastAPI, Flask или Django, для предоставления прогнозов другим программным компонентам.
Упакованный код далее используется в производственной среде.
Производственная среда:
В зависимости от размера и графика проекта среды разработки и производства могут быть одинаковыми или разными. Как правило, производственная среда — это этап, на котором модели в конвейере масштабируются, отслеживаются и обслуживаются контейнерами в режиме реального времени.
Некоторые задачи, выполняемые в производственной среде:
- Оптимизация дизайна. В целом существует большой разрыв между количеством моделей и качеством моделей в исследовательской среде, среде разработки и производственной среде. Следовательно, при необходимости дизайн системы AI/ML, созданный ранее в среде разработки, необходимо оптимизировать и перепроектировать для производства.
- Контейнеризация с использованием Docker. Разработчики могут использовать несколько компонентов, таких как Data Extractor, Elastic Search, Rest API, очереди обмена сообщениями и т. д. У каждого компонента есть соответствующие библиотеки зависимостей. Наличие компонентов с разными версиями библиотеки в одной среде может привести к конфликту. С помощью Docker специалисты по ИИ могут стандартизировать среды и запускать разные контейнеры для разных компонентов изолированно, где каждый контейнер имеет зависимые библиотеки для соответствующего компонента. Среда может быть создана Docker с помощью DockerFile. DockerFile содержит такие инструкции, как переход к соответствующей папке, установка зависимостей, настройка переменных среды, загрузка параметров конфигурации для модели и т. д. Масштабирование с помощью контейнеров упрощается, поскольку специалисты по искусственному интеллекту могут создавать новые контейнеры для одного и того же компонента за считанные секунды, чтобы удовлетворить требования масштабирования. .
- Оркестрация рабочего процесса и абстракция инфраструктуры.Инструменты оркестровки рабочего процесса, такие как Kubernetes от Google и Openshift от Red Hat, могут быстро запускать несколько контейнеров на разных компьютерах по запросу, управлять ресурсами, такими как память и вычислительные ресурсы для контейнеров, обеспечивать высокую доступность контейнеров для продукт. В зависимости от организации инфраструктура инструмента оркестрации рабочих процессов принадлежит отдельным командам, таким как DevOps, или самим специалистам по искусственному интеллекту. Некоторым специалистам по ИИ может показаться утомительным работать с инструментами абстракции инфраструктуры. Они могут использовать инструменты абстрагирования инфраструктуры, такие как Kubeflow от Google и Metaflow от Netflix, которые построены на основе инструментов оркестрации рабочих процессов, что позволяет им больше сосредоточиться на моделях и перестать беспокоиться о низкоуровневой инфраструктуре.
- Непрерывная интеграция и непрерывная доставка (CI/CD). CI/CD позволяет специалистам по ИИ работать вместе в общем репозитории кода, где обновления части кода автоматически отправляются, создаются, тестируются и доставлены и развернуты в общем репозитории кода, а проблемы с кодом можно отслеживать и решать соответственно.
- Мониторинг и обслуживание развернутых моделей. В отличие от традиционного программного обеспечения, модели AI/ML динамичны и со временем ухудшаются. Следовательно, важно измерять, отслеживать и управлять различными показателями и настраивать модели, прежде чем они негативно повлияют на взаимодействие с пользователем и ценность для бизнеса.
В целом, работоспособность модели можно измерить тремя разными метриками.
а. Метрики ресурсов: измеряет входящий трафик, использование или использование памяти ЦП/ГП (эффективно ли сервер использует ресурсы?), прогнозируемую задержку (быстро ли сервер обрабатывает запросы?), пропускную способность (поддерживает ли сервер хорошую пропускную способность и масштабируется на основе запросы?) и стоимость (соответствуют ли затраты на хостинг и логические выводы всего конвейера машинного обучения или увеличились?).
б. Метрики данных: важно сначала проверить правильность формата входных данных, а не отлаживать весь конвейер.
- Проверка аномалий. Простые проверки, такие как максимальное и минимальное значения для каждой функции (возраст не может быть отрицательным или равным 100 000), могут выявить и подтвердить экстремальные или аномальные точки данных во входных данных. Позже команда может провести мозговой штурм и найти основные причины получения этих аномалий от пользователей.
- Проблемы с качеством данных. Пользователи могут указывать синонимы («Девушка» вместо «Женщина») или неверные значения («Почта» вместо «Мужчина») в качестве входных данных для конвейера. В этих случаях модель может не распознать значение признака «Пол» (данные могут отсутствовать при обучении модели) и присвоить признаку NaN. Несмотря на то, что модель не ломается, предсказания, сделанные моделью, могут быть неверными. Следовательно, важно тестировать новые данные, которых модель раньше не видела.
- Дрейф данных. Когда мы обучаем модель с некоторыми статическими данными, она предполагает определенные шаблоны, основанные на распределении предоставленных данных. Однако реальные данные являются динамическими. Из-за этих изменений допущения, сделанные моделью, могут стать недействительными, и модель может стать предвзятой, что приведет к снижению производительности при оценке модели в реальном времени. Например, потребление воды в больницах во время COVID-19 очень велико по сравнению с историческими данными. Следовательно, мы не можем использовать модель, построенную на исторических данных о потреблении воды во время COVID-19. Это явление называется «Дрейф данных». Периодическое обнаружение изменений в распределении данных с помощью статистических тестов может помочь обнаружить дрейф данных.
в. Показатели модели. Крайне важно определить ожидаемую производительность моделей перед их развертыванием в рабочей среде и периодически проверять соответствие ожидаемым KPI. Если прогнозы модели или ожидаемые значения KPI не соответствуют эталонным показателям, специалисты по ИИ могут столкнуться с проблемой дрейфа модели. Дрейф модели — это явление, при котором отношения между функциями меняются, и модель больше не дает точных прогнозов. Например, соотношение между рождаемостью и коэффициентом смертности изменилось во время COVID-19, что привело к дрейфу моделей. Дрейф модели можно обнаружить путем периодического анализа отзывов из циклов обратной связи и сопоставления с тем, что влияет на бизнес.
На основе метрик модели и метрик данных, если требуется переобучение, специалист по ИИ может начать повторять исследования, разработки и производственную среду для развертывания и мониторинга новой модели. Часто повторное обучение также является способом улучшить производительность модели, чтобы отразить изменение данных с течением времени.
Вывод:
Любому человеку, который хочет сделать карьеру в области ИИ, полезно знать основы всех трех сред. Эта осведомленность может помочь людям определить навыки, необходимые для работы в окружающей среде. В зависимости от своих интересов они могут выбрать специализацию в одной или нескольких из этих трех сред и в конечном итоге принять решение о своей карьере в современном быстро меняющемся мире данных.
Добавьте меня в LinkedIn. Спасибо!