Обработка естественного языка или NLP (Natural Language Processing) – область, находящаяся на пересечении компьютерных наук, искусственного интеллекта (ИИ) и лингвистики. Анализ современных методов NLP и реализующих их технологий представлен в работе [1, с. 19]. Для успешного и своевременного создания любой новой информационной технологии разработчику требуется выбрать соответствующие аппаратные и программные инструментальные средства из огромного множества продуктов, представленных на рынке, что является весьма нетривиальной задачей. Для оказания помощи разработчику в работе [2] проведен обзор аппаратных инструментальных средств. Настоящая статья посвящена рассмотрению современных программных инструментов.
В зарубежной и отечественной технической литературе программные инструменты, используемые при разработке систем с элементами NLP, принято разделять на два класса – фреймворки и платформы.
Фреймворк – это набор инструментов и стандартных реализаций для обеспечения наиболее быстрой разработки программного продукта (ПП).
Платформа – понимается как набор инструментов и окружения (аппаратного и программного) для создания, оценки и сопровождения ПП.
Данные определения не являются общепринятыми, отсутствуют их чёткие границы. Поэтому часто один и тот же набор инструментов, библиотек, и подходов называют как платформой, так и фреймворком. Мы используем данные термины как наиболее распространенные в последние годы в литературе и в среде разработчиков систем искусственного интеллекта (ИИ).
Разработчики ИИ используют фреймворки по четырём основным причинам:
- Готовая инфраструктура. Фреймворки предоставляют разработчикам ИИ инструменты, необходимые для создания продукта ИИ. Нет необходимости создавать их «с нуля».
- Стандартизация кода. Работая над одним и тем же проектом, разработчики могут генерировать разные идеи о том, как решать схожие задачи. Фреймворки имеют требования и стандарты, которые позволяют реализовать единый подход к кодированию и принятию решений, а также улучшить качество кода.
- Оптимизация ресурсов. Фреймворки помогают сэкономить время разработчиков и бюджет. Используя фреймворк для создания ПП, разработчики ИИ получают доступ к опыту сообщества и возможность использовать лучшие практики разработки для своего проекта. Как правило, наиболее удачные и распространённые фреймворки создаются сообществом разработчиков и являются «открытыми». Таким образом, все желающие могут получить доступ к исходным текстам программ, при необходимости изучить их, адаптировать под свои задачи и проверить на наличие «закладок».
- Простота использования. Фреймворки ИИ предоставляют простой интерфейс для работы со сложными математическими операциями и алгоритмами. Это позволяет разработчикам работать с моделями ИИ без необходимости создавать их «с нуля».
- Эффективность. Большинство фреймворков ИИ оптимизированы для высокопроизводительных вычислений. Могут использовать GPU (графические процессоры), TPU (тензорные процессоры) и другие аппаратные ускорители для машинного обучения.
- Гибкость и кастомизация (кастомизация (от англ. to customize – настраивать, изменять) – подход, подразумевающий изменение массового товара или услуги под запросы потенциальных клиентов). Фреймворки ИИ являются гибкими инструментами, позволяя настраивать и экспериментировать с различными характеристиками модели ИИ, включая архитектуру нейронной сети, функции потерь и т. д.
- Совместимость. Многие фреймворки ИИ совместимы с популярными языками программирования, что упрощает интеграцию моделей.
- Масштабируемость. Фреймворки ИИ могут решать как небольшие, так и крупномасштабные задачи, для подготовки которых могут быть задействованы гигантские вычислительные кластеры.
- У многих фреймворков есть репозитории моделей, часто называемые модельными зоопарками, где можно найти предварительно обученные модели для различных задач. Они могут сэкономить значительное количество времени и вычислительных ресурсов.
- Совместимость фреймворков. Некоторые фреймворки могут работать вместе, позволяя объединить сильные стороны нескольких фреймворков для различных аспектов проекта.
- Поддержка различных аппаратных платформ, позволяющая проводить обучение на сверхмощных вычислительных кластерах, а полученные решения переносить на менее мощные системы, имеющие другую архитектуру.
Инструментальная среда разработчика
Инструментальные средства разработки могут объединяться в системы автоматизированного конструирования ПО, называемые CASE-системами (Аббревиатура CASE расшифровывается как Computer Aided Software Engineering (программная инженерия с компьютерной поддержкой)).
Поскольку технологии ИИ входят в класс информационных технологий, то методы и инструменты разработки, используемые при разработке программных и программно-аппаратных комплексов общего назначения, применяются также и при создании систем на базе технологий ИИ. Тем не менее технологии создания ПП с ИИ имеют свою специфику.
Самым главным отличием процесса создания систем на базе технологий ИИ от информационных систем общего назначения является тот факт, что процесс носит творческо-экспериментальный (исследовательский) характер, это затрудняет планирование, оценку характеристик и возможностей конечного продукта.
Перечислим наиболее значимые системы (элементы) инструментальной среды, применяемые при создании ПП с использованием технологий ИИ.
1. Системы ведения (планирования) проекта позволяют решать следующие задачи:
- формирования календарных графиков работ и сетевых графиков;
- управления ресурсами, включающие возможность задавать распределение ресурсов между работами во времени, строить диаграммы ресурсов;
- управления затратами, позволяющие рассчитывать финансовые показатели проекта и т. д.
Типичными представителями инструментов являются хорошо зарекомендовавшие системы типа JIRA и её аналоги (наиболее известные отечественные системы ЭЛМА и Адванта). JIRA – Система управления проектами, обеспечивающая коллективную разработку ПП.
2. Системы сбора информации – используется для автоматизации этапа анализа требований, предъявляемых к программному обеспечению.
Системы автоматизируют подготовку спецификации требований к программному обеспечению. Для этого используют средства автоматизации информационного обследования, получения «внешнего описания» ПП.
Отличительной особенностью для систем, построенных на базе технологий ИИ то, что уже на этом этапе прорабатываются вопросы получения исходных данных, необходимых для обучения, их форматы и методы хранения. Такая информация содержит огромные объемы, «сырых» данных, которые требуют своего предварительного анализа, очистки, корректировки и преобразования в форму, удобную для использования. Для чего используются специальные инструменты и специализированные (например, графовые СУБД типа Tarantool Graph DB или векторные базы данных типа Milvus) или адаптированные для целей машинного обучения системы управления базами данных (СУБД).
3. Средства проектирования.
Обеспечивают разработку архитектуры ПП, разработку структур программ ПП и их детальную спецификацию.
4. Средства прототипирования.
В этих средствах особое внимание уделяется возможностям совместной разработки, быстрого внесения изменений в проект, сохранения промежуточных результатов и отката к предыдущим версиям. Примером такой системы может служить Git – распределённая система управления версиями. Кроме размещения кода, разработчики могут общаться, комментировать правки друг друга, а также следить за новостями. С помощью широких возможностей Git программисты могут объединять свои репозитории. Git предлагает удобный интерфейс для этого и может отображать вклад каждого участника в виде древовидной структуры.
Наиболее распространёнными средствами прототипирования среди разработчиков ИИ являются системы типа Colab (Google Colaboratory) и Jupyter Notebook. В них естественным образом интегрируются практически все необходимые инструменты для проведения прототипирования и получения практически готового ПП.
Большое распространение получил инструмент Anaconda, позиционируемый разработчиками как дистрибутив языков программирования Python и R. Он включает набор популярных свободных библиотек, объединённых проблематиками науки о данных и машинного обучения. Основная цель – поставка единым согласованным комплектом наиболее востребованных прикладных модулей и пакетов (таких, как NumPy, SciPy, Astropy и других) с разрешением возникающих зависимостей и конфликтов, которые неизбежны при одиночной установке.
В основе Anaconda лежит система управления пакетами conda («менеджер пакетов» или «пакетный менеджер») – набор ПО, позволяющего управлять процессом установки, удаления, настройки и обновления различных компонентов ПО с графическим интерфейсом Anaconda Navigator. Дистрибутив Anaconda устанавливается единожды, и вся последующая конфигурация, в том числе установка дополнительных модулей, может проводиться без подключения к интернету. Кроме того, обеспечивается возможность ведения нескольких изолированных сред с раздельным разрешением версионных зависимостей в каждой. Такая возможность позволяет использовать в проекте библиотеки с различными версиями.
Графический интерфейс Anaconda Navigator, позволяет устанавливать и запускать приложения, дополнительные пакеты и т. д. без использования командной строки Anaconda Prompt. Разработчикам ИИ доступны следующие приложения и инструменты: JupyterLab, Jupyter Notebook, QtConsole, Spyder, Glueviz, Orange, RStudio, Visual Studio Code, PyCharm CE.
При разработке широко используются различные СУБД. Особого предпочтения у разработчиков ИИ нет. Каждый выбирает для себя наиболее знакомый ему инструмент, хотя в целом отдаётся предпочтение открытым проектам.
5. Автоматизированные средства подготовки информации. Они, как правило, интегрированы в среду разработчика ИИ.
6. Дистилляторы – средства оптимизации готового ПП. Дистилляция знаний (knowledge distillation) – это способ обучения в первую очередь нейросетевых моделей машинного обучения, направленный на передачу знаний от модели-учителя к модели-ученику. Дистилляция проводится с целью оптимизации полученной модели, что бы либо ускорить работу модели, либо сократить требуемые ресурсы для ее работы.
7. При разработке систем с использованием технологий ИИ применяются средства, не являющиеся специфическими для ИИ, поэтому мы их просто перечислим:
- текстовые редакторы;
- SDK (SDK (англ. software development kit – комплект для разработки программного обеспечения) Набор инструментов для разработки программного обеспечения, объединённый в одном пакете, обычно содержит комплект необходимых библиотек, компилятор, отладчик, иногда – интегрированную среду разработки. Обычно зависят от комбинации аппаратного обеспечения и операционной системы), IDE (IDE (Integrated Development Environment) – это набор программных инструментов, которые используются для создания ПО. Второе название - интегрированная среда разработки);
- препроцессоры, компиляторы, интерпретаторы, линковщики;
- парсеры и генераторы парсеров (типа Javacc);
- ассемблеры, отладчики, профилировщики;
- библиотеки подпрограмм и системные библиотеки;
- генераторы документации и файлов помощи;
- средства анализа покрытия кода;
- средства сопровождения;
- средства непрерывной интеграции;
- средства автоматизированного тестирования;
- системы управления версиями и др.;
- hex-редакторы;
- средства подготовки дистрибутивов;
- средства тиражирования;
- средства развертывания (инсталляторы);
- редакторы ресурсов;
- декомпиляторы, дизасэмблеры;
- средства отслеживания активности системы и изменений, происходящих в системе;
- средства создания и поддержания контейнеров (создают виртуальную среду для отдельных классов программ, в которой можно исследовать поведение программы, например Докер (Docker – программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации. Позволяет «упаковать» приложение со всем своим окружением и зависимостями в контейнер, который может быть развёрнут на любой Linux-системе, а также предоставляет набор команд для управления этими контейнерами)).
Общее количество инструментов (фреймворков и библиотек), используемых разработчиками ИИ на начало 2024 г., составило более 400 единиц. Кратко рассмотрим наиболее распространенные фреймворки, применяемые в NLP.
TensorFlow
TensorFlow – это комплексная платформа для машинного обучения с открытым исходным кодом. Она была разработана командой Google Brain как продолжение закрытой системы машинного обучения DistBelief, однако в ноябре 2015 года компания передумала и открыла фреймворк для свободного доступа. Как и большинство фреймворков глубокого обучения, TensorFlow имеет API (API (англ. application programming interface – программный интерфейс приложения) – это набор способов и правил, по которым различные программы общаются между собой и обмениваются данными) на Python поверх механизма языков C и C ++, что ускоряет его работу.
TensorFlow имеет гибкую экосистему инструментов, библиотек и ресурсов сообщества. Это позволяет исследователям использовать самые современные технологии машинного обучения, а разработчикам - создавать и развёртывать приложения на базе машинного обучения.
Платформа предоставляет интуитивно понятные высокоуровневые API-интерфейсы, например, Keras, с быстрым выполнением, что обеспечивает быструю, прозрачную интеграцию модели и простую отладку. За счёт мультиплатформенности решение позволяет обучать и разворачивать модели в облаке и локально, независимо от используемого пользователем языка. Если необходимо запустить готовую модель машинного обучения на смартфоне или IoT-устройстве (Интернет вещей (англ. internet of things, IoT) – концепция сети передачи данных между физическими объектами («вещами»), оснащёнными встроенными средствами и технологиями для взаимодействия друг с другом или с внешней средой), то используется среда глубокого обучения с открытым исходным кодом TensorFlow Lite. Когда нужно создать и обучить модель на JavaScript, а после развернуть её в браузере или на Node.js, то можно воспользоваться библиотекой TensorFlow.js.
Стоит отметить, что фреймворк постоянно развивается за счёт открытого исходного кода и огромного сообщества энтузиастов. Также за счёт его популярности есть множество уже решённых задач, что существенно сокращает время разработки.
Недостатки TensorFlow:
Сложность отладки. Например, если во время работы с TensorFlow в коде высвечивается ошибка, то фреймворк не укажет пользователю конкретную строчку, спровоцировавшую её.
Другим существенным недостатком TensorFlow, который следует отметить: фреймворк всегда забирает всю видеопамять (или память ускорителя). Если необходимо её ограничить, то в файле конфигурации требуется явно указывать объем памяти, что сложно предварительно рассчитать. Проекты, которые используют фреймворк TensorFlow:
- DeepSpeech – система распознавания речи;
- Mask R-CNN – модель, которая генерирует ограничительные рамки и маски сегментации для каждого объекта на изображении;
- семейство моделей BERT – предобученная нейронная сеть, используемая для решения задач обработки естественного языка.
PyTorch
PyTorch – это среда машинного обучения на языке Python с открытым исходным кодом, обеспечивающая тензорные вычисления с GPU-ускорением. Она была разработана компанией Facebook и представлена в октябре 2016 года, а открыта для сторонних разработчиков – в январе 2017 года. Фреймворк подходит для быстрого прототипирования в исследованиях, а также для любителей и небольших проектов.
Фреймворк предлагает динамические графы вычислений, которые позволяют обрабатывать ввод и вывод переменной длины, что полезно, например, при работе с рекуррентными нейронными сетями. Если коротко, то за счёт этого инженеры и исследователи могут менять поведение сети «на лету».
За счёт глубокой интеграции фреймворка с кодом C++ разработчики могут программировать на C и C++ с помощью API-расширения на основе FFI (Англ. Foreign function interface (FFI) – это механизм, с помощью которого программа, написанная на одном языке программирования, может вызывать подпрограммы или использовать сервисы, написанные или скомпилированные в другом языке) для Python.
В отличие от TensorFlow, PyTorch менее гибок в поддержке различных платформ. Также в нём нет встроенных инструментов для визуализации данных, но есть сторонний аналог, называемый tensorboardX.
В отличие от TensorFlow, если при работе с PyTorch появляется ошибка, то это конкретная недоработка в коде и система выделит вам именно ту строчку, которая её спровоцировала.
Также при развёртке сетей на GPU PyTorch самостоятельно определит необходимый объем памяти и займёт только необходимую видеопамять.
PyTorch выделяется параллелизмом данных – сценариями, в которых операции выполняются одновременно над разными элементами системы, распределяя вычислительную работу между несколькими ядрами CPU или GPU.
В 2023 году Meta выпустила PyTorch 2.0, который они описывают как «более быстрый, более Pythonic и динамичный, как никогда». Эта новая версия фреймворка демонстрирует лучшую производительность, чем его предшественник. Команда разработчиков утверждает, что снизила барьер для входа для разработчиков ИИ и достигла большей гибкости в динамических формах.
Проекты, которые используют Фреймворк PyTorch:
- PyText – библиотека для обработки устной и письменной речи.
- vid2vid – генеративная нейросеть для подмены деталей и свойств видеопотока.
- pix2pix – алгоритм, который превращает пользовательские наброски в фотографии.
Keras
Keras – открытая среда глубокого обучения, написанная на Python. Она была разработана инженером из Google Франсуа Шолле и представлена в марте 2015 года.
Фреймворк нацелен на оперативную работу с нейросетями и является компактным, модульным и расширяемым. Подходит для небольших проектов, так как создать что-то масштабное на нём сложно, то он будет проигрывать в производительности нейросетей тому же TensorFlow.
Keras работает поверх TensorFlow, CNTK и Theano и предоставляет интуитивно понятный API, который, по мнению наших инженеров, пока что является лучшим в своём роде.
Фреймворк содержит многочисленные реализации широко применяемых строительных блоков нейронных сетей, таких как слои, целевые и передаточные функции, оптимизаторы, а также множество инструментов для упрощения работы с изображениями и текстом.
Keras 3.0 был запущен в 2023 году. Новая версия предоставляет несколько важных преимуществ:
- Более высокая производительность модели искусственного интеллекта по сравнению с предыдущей версией.
- Параллелизм моделей и данных – функция, позволяющая разделять модели и данные на нескольких графических процессорах.
- Возможность использовать данные из любого источника.
Проекты, которые используют фреймворк Keras:
- Mask R-CNN – модель, которая генерирует ограничительные рамки и маски сегментации для каждого объекта на изображении, отделяя таким образом объект от фона;
- face_classification – алгоритм для распознавания лиц в режиме реального времени и классификации эмоций и пола;
- YOLOv3 – нейронная сеть для обнаружения объектов в режиме реального времени.
Darknet
Darknet – это фреймворк с открытым исходным кодом, написанный на языке C с использованием программно-аппаратной архитектуры параллельных вычислений CUDA. Он быстрый, лёгкий и удобный в использовании. Также Darknet поддерживает вычисления на базе CPU и GPU.
Обученные веса Darknet хранит в формате, который может быть распознан с помощью разных методов на различных платформах. Однако это может стать проблемой, при переносе с одного сверхмощного оборудовании, на другое маломощное.
Так как фреймворк написан на C и не имеет другого API, то в случае, когда требования платформы заставят обратиться к другому языку программирования, разработчику придётся дополнительно заняться проблемой его интеграцией. К тому же он распространяется только в формате исходного кода, и процесс компиляции на некоторых платформах может быть несколько проблематичным.
Фреймворк не рекомендуется использовать для сложных проектов, но вполне применим для создания сверхбыстрых детекторов объектов.
Проекты, которые используют фреймворк Darknet:
- Семейство моделей YOLO – нейронная сеть для обнаружения объектов в режиме реального времени.
- Tiny-YOLO 3 – компактная нейронная сеть для обнаружения объектов.
XGBoost
XGBoost – это фреймворк с открытым исходным кодом, который предлагает систему градиентного бустинга для таких языков как C++, Java, Python, R, Julia. Он разработан для обеспечения высокой эффективности, гибкости и портативности.
Этот фреймворк относится не к глубокому обучению, как все выше представленные, а к классическому.
Изначально это был исследовательский проект Тяньцзи Чена и Карлоса Гестрина в составе Distributed [Deep] Machine Learning Community, но позже он был расширен и представлен публике на конференции SIGKDD в 2016 году, где был высоко оценён специалистами.
После своей презентации фреймворк лидировал в соревнованиях Kaggle (Kaggle – система организации конкурсов по исследованию данных, а также социальная сеть специалистов по обработке данных и машинному обучению) и до сих пор остаётся фаворитом для решения большинства задач на платформе.
XGBoost ориентирован на скорость вычислений, высокую производительность модели и подходит для решения задач регрессии, классификации и упорядочивания. Если данные можно представить в виде таблицы, то точность и производительность будут существенно выше, чем у DeepLearning-решений (DeepLearning Англ. Глубокое обучение – создание и обучение нейросетей сложной архитектуры, имеющей большое количество слоёв). Любимый инструмент Data Scientist-ов.
Фреймворк совместим с операционными системами Windows, Linux и OS X, а также поддерживает кластеры AWS, Azure и Yarn, хорошо работает с Flink, Spark.
Scikit-learn
Scikit-learn – это библиотека машинного обучения на базе Python, ориентированная на прогнозный анализ данных. Основные алгоритмы, лежащие в основе этой библиотеки, написаны на Cython – разновидности Python, которая может достигать уровней производительности кода, сопоставимых с языком «C». Это обеспечивает высокую производительность, scikit-learn.
Scikit-learn использует три ключевые библиотеки:
- NumPy для работы с массивами данных и математическими алгоритмами;
- SciPy для научных вычислений;
- Matplotlib для визуализации данных.
Scikit-learn предоставляет разработчикам множество API для кластеризации данных, вычисления вероятностей, выбора и извлечения объектов и т. д.
Тем не менее он не подходит для сложных задач и «тяжелых» вычислений.
Как и большинство фреймворков машинного обучения, scikit-learn используется для решения задач, связанных с классификацией изображений, анализом настроений, разработкой системы рекомендаций, и так далее. Например, известный музыкальный портал Spotify использует эту библиотеку для рекомендаций своим пользователям.
LangChain
LangChain – это фреймворк, предназначенный для упрощения создания приложений с использованием больших языковых моделей (LLM). Используется как платформа интеграции различных языковых моделей. LangChain используют для анализа документов их обобщения, создания чат-ботов и анализаторов кода. LangChain был запущен в октябре 2022 года как проект с открытым исходным кодом Харрисоном Чейзом, работавшим в стартапе машинного обучения Robust Intelligence.
Основным достоинством проекта является возможность интеграции с огромным количеством систем и хранилищ данных. По состоянию на март 2023 года LangChain обеспечивал интеграцию с системами, включая:
- облачное хранилище Amazon, Google и Microsoft Azure; оболочки API для новостных порталов, информации о фильмах и погоде;
- Google Drive для обобщения, извлечения и создания документов, электронных таблиц и презентаций;
- Google Search и Microsoft Веб-поиск Bing;
- языковые модели OpenAI, Anthropic и Hugging Face;
- поиск и обобщение руководств по исправлению в iFixit и wiki;
- MapReduce для ответов на вопросы, объединения документов и генерации вопросов;
- оценка перекрытий по N-граммам; pyPdf, pdfminer, fitz и pymupdf для извлечения текста из PDF-файлов и манипулирования с ним;
- генерация, анализ и отладка кода на Python и JavaScript;
- векторная база данных Milvus для хранения и извлечения эмбеддингов;
- векторная база данных Weaviate для кэширования встраиваемых объектов и объектов данных;
- Redis кэширует хранилище базы данных;
- Python RequestsWrapper и другие методы для запросов API;
- базы данных SQL и NoSQL, включая Поддержка JSON;
- Streamlit, в том числе для ведения журнала;
- отображение текста для поиска k ближайших соседей;
- операции преобразования часового пояса и календаря; отслеживание и запись символов стека в потоковых и асинхронных подпроцессах, а также веб-сайт и SDK Wolfram Alpha.
LlamaIndex
LlamaIndex – это гибкий фреймворк данных для объединения пользовательских источников данных с моделями больших языков, обеспечивая мощные приложения ИИ, дополненные частными знаниями.
Ключевые особенности LlamaIndex.
LlamaIndex – это комплексная платформа (фреймворк) данных для создания приложений LLM, предлагающая инструменты для загрузки данных, индексации, запросов и их оценки. Он поддерживает интеграцию с различными источниками данных, хранилищами векторов и LLM, предоставляя как высокоуровневые API для начинающих, так и низкоуровневые API для продвинутых пользователей. LlamaIndex позволяет разработчикам легко подключать пользовательские данные к большим языковым моделям, расширяя их возможности с помощью специальных знаний, получаемых из различных источников.
Поддерживает загрузку более чем из 160 источников и форматов данных, включая неструктурированные, частично структурированные и структурированные данные (API, PDF, документы, SQL и т. д.).
Гибкая индексация и хранение: позволяет хранить и индексировать данные для различных модальностей и тематических направлений, с поддержкой интеграции более чем для 40 источников данных (хранилищ векторов, документов, графов и SQL-баз данных).
Обеспечивает расширенные возможности запросов: от простых цепочек запросов до расширенных систем RAG (Retrieval Augmented Generation (RAG) – это технология, сочетающая в себе поиск релевантной информации в существующих хранилищах данных и генерацию текста с помощью языковых моделей, для создания более точных и информативных ответов) и создания агентов.
Предоставляет инструменты для оценки производительности приложений LLM, измеряя качество извлечения информации и формирования результатов (ответов на запросы).
Предлагает многочисленные методы интеграции с хранилищами векторов, плагинами ChatGPT, инструментами трассировки, LangChain и различными LLM, повышая универсальность и совместимость.
Варианты использования LlamaIndex:
1. Чат-боты с пользовательской базой знаний: создание чат-ботов со специальными знаниями, с интегрированием частных источников данных с LLM.
2. Автоматизированный анализ документов для обработки и анализа больших объемов документов, извлечение информации и ответы на запросы на основе содержания. Персонализированные рекомендации контента:
- интеллектуальные системы извлечения данных для создания передовых поисковых систем, которые понимают контекст и семантику, улучшая извлечение информации из больших наборов данных;
- ассистенты для исследований на базе ИИ для создания инструментов, которые помогают исследователям аннотировать статьи, генерировать обзоры литературы и отвечать на специальные вопросы.
По предварительной оценке, данный фреймворк наиболее перспективен для создания систем по обработке и анализу документов в интересах государственных учреждений России.
Hugging Face
Hugging Face – это целое сообщество разработчиков и исследователей ИИ, как платформа, так и фреймворк. Сообщество предоставляет модели ИИ, пространства и наборы данных для создания приложений машинного обучения с отличной функциональностью и производительностью.
Hugging Face предоставляет обширную библиотеку инструментов для работы с предварительно подготовленными моделями NLP, что делает его важным ресурсом для разработчиков и исследователей в областях ИИ и NLP. Библиотека Hugging Face Transformers широко используется для создания, адаптации и развертывания моделей на основе transformer, в том числе для классификации текстов, генерации текстов и других задач NLP.
HuggingFace предоставляет бесплатный доступ к хостинговому пространству, организациям, репозиториям и инструментам с открытым исходным кодом, а также предлагает платные услуги с более продвинутыми функциями и поддержкой.
Watsonx
Watsonx от компании IBM – это обширная коллекция сервисов для ИИ и машинного обучения. Долгая история IBM в области ИТ делает Watsonx достойным упоминания в списках лучших фреймворков для ИИ.
Коллекция Watsonx включает три основных компонента: студию разработки новой модели, хранилище данных и инструментарий для ИИ. Этот фреймворк предоставляет разработчикам и организациям разнообразный набор инструментов для создания и запуска приложений, управляемых ИИ, включая обработку естественного языка, компьютерное зрение и прогнозную аналитику.
Возможно получить доступ к многочисленным функциям Watsonx на бесплатном уровне или использовать стандартный платный план, который обеспечивает размещение модели, быструю настройку, управление инфраструктурой.
OpenAI
OpenAI – легендарная команда, выпустившая генеративные, предварительно обученные модели трансформеров (GPT) и чат GPT; эта команда также стоит за DALL-E и множеством исследовательских работ, руководств и отчетов по ИИ.
OpenAI – яркое явление в ИТ-индустрии, она стала одной из самых обсуждаемых компаний в области ИИ в 2023-2024 гг.
OpenAI предоставляет API-сервисы, позволяющие разработчикам и предприятиям использовать возможности своих моделей ИИ в различных приложениях. Компания предлагает OpenAI API на базе GPT-4 для решения различных задач, а платные планы подписки ChatGPT расширяют возможности ПП.
OpenAI активно занимается исследованиями в области ИИ. OpenAI в основном использует свои собственные платформы, созданные на основе TensorFlow и других библиотек. Хотя они не являются общедоступными, OpenAI предоставляет различные сервисы и инструменты, построенные на этих платформах, такие как OpenAI Gym (обучение с подкреплением) и ChatGPT (обработка естественного языка).
Apache Hadoop
Hadoop – еще одна платформа с открытым исходным кодом, разработанная компанией Apache Software Foundation. Она использует язык программирования Java и имеет собственное сообщество пользователей. Hadoop – это библиотека ПО, которая помогает обрабатывать действительно большие наборы данных. Она позволяет нескольким пользователям получать одновременный доступ к данным одновременно. Hadoop обеспечивает эффективную подготовку данных для их дальнейшего использования в системах машинного обучения.
Выводы:
- Наибольшее распространение и развитие получили решения и инструменты, созданные сообществами на базе открытых проектов. По всей видимости, данный подход обеспечивает создание наиболее эффективных фреймворков и будет доминировать в ближайшее десятилетие.
- Наблюдается взаимопроникновение технологий и подходов в реализации фреймворков. Наиболее удачные решения перенимаются разработчиками и внедряются в свои системы. Вследствие чего наиболее популярные системы имеют в своей основе незначительные отличия, преимущественно связанные с форматами API, представлением данных и дополнительным сервисом.
- Основное направление развития связанно с расширением возможности интеграции фреймворков с различными хранилищами информации и автоматическим поддержанием и преобразованием форматов исходных данных.
- Создаются инструменты, позволяющие в одном проекте объединять различные подходы и модели, созданные с пользованием различных фреймворков и отдельных библиотек. Поддерживается курс на создание гибридных систем.
- Для создания систем на базе технологий ИИ требуются значительные и зачастую дорогостоящие вычислительные мощности. В силу этого многие небольшие компании, отдельные исследователи и разработчики не могут финансово обеспечить себя собственными аппаратными высокопроизводительными комплексами. Поэтому они вынуждены арендовать необходимые ресурсы на различных облачных структурах. Данный подход часто используется и при эксплуатации готового ПП, когда программному комплексу для своей работы необходимы облачные ресурсы. Подход наиболее распространён в компании OpenAI.
- В связи с появлением большого числа разнообразных аппаратных ускорителей, имеющих несовместимую архитектуру, остро стоит вопрос создания инструментов, позволяющих адаптировать полученные решения для различных платформ.