Первая попытка объединить модели и наборы данных в общий API для разных областей, чтобы устранить несовместимость реализации.

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

Здесь мы пытаемся сделать первый простой шаг к решению этой проблемы следующим образом: i) мы сначала исследуем многие существующие репозитории и их каталоги; ii) затем мы определяем параметры модели и набора данных, которые определяют эту концептуальную совместимость; iii) и, наконец, мы пытаемся объединить репозитории в общий интерфейс, чтобы сохранить совместимость.

Мы хотим поделиться своими успехами, поговорив о двух основных особенностях, вытекающих из этого подхода:

  • «Библиотека библиотек», которая централизует модели и наборы данных по областям в рамках общего API, а также
  • Внешний интерфейс для визуализации и просмотра основных параметров, используемых для определения совместимости между моделями и наборами данных.

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

В поисках точек соприкосновения: путь к стандартизации

Для связывания модели с набором данных требуется интерфейс, который гарантирует, что данная задача совместима с обоими. Эта совместимость оценивается путем выполнения проверок как на стороне модели, так и на стороне набора данных по набору соответствующих параметров (например, если модель требует метки типа объекта в качестве входных данных, то набор данных должен предоставлять метки типа объекта). Идентифицируя такие «соответствующие параметры» по областям и задачам, мы можем связать их вместе в не зависящий от реализации уровень абстракции и использовать его для обертывания реализаций существующих репозиториев. В конечном итоге задача этого уровня состоит в том, чтобы извлекать, стандартизировать и раскрывать рассматриваемые параметры.

Возьмем, к примеру, случай с компьютерным зрением. Для большинства задач CV важно, по крайней мере, отслеживать входную и выходную форму модели сети, а также поддерживаемое количество каналов изображения. Здесь абстракция должна убедиться, что собирает эти параметры и хранит их в общем формате, независимо от исходной реализации (Torchvision, MXNet и т. Д.). Это похоже на то, что OpenAI’s Gym уже делает в обучении с подкреплением, где стандартизованный API определен для взаимодействия с любой средой; затем модели просто необходимо выполнить некоторые проверки по соответствующим параметрам (например, пространствам действий и наблюдений), чтобы подтвердить ее совместимость.

Мы хотели бы распространить эту идею на другие области и области.

Библиотека библиотек: централизованное хранилище со стандартизированным API

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

Мы предлагаем здесь первый набросок такого хранилища. Разработанный как можно более простой, он состоит из трех основных функций: load_model, load_dataset и model_to_dataset (с некоторыми оговорками, например, dataset == environment в RL). Эти функции позволяют создать экземпляр желаемой модели, желаемого набора данных и, если пара концептуально совместима, гарантировать взаимно совместимые входные и выходные данные соответственно.

import sotaai
m = sotaai.cv.load_model(“alexnet”)
d = sotaai.cv.load_dataset(“mnist”)
compatible_m, compatible_d = sotaai.cv.model_to_dataset(m,d)

Эти функции основаны на подключении существующих исходных библиотек к абстракции с помощью специфичных для библиотеки тонких оболочек, которые, в свою очередь, извлекают и предоставляют общие параметры для создания стандартизованного абстрактного класса. Затем функция model_to_dataset обеспечивает совместимость, выполняя проверки выставленных параметров и выполняя необходимые модификации (например, изменение размера изображений или изменение выходных слоев). Стоит отметить, что благодаря уровню стандартизации проверки совместимости теперь выполняются относительно просто, поскольку они определяются только один раз для абстрактных классов.

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

Визуализация и навигация по набору данных и пространству модели

Второй важный аспект, выпадающий из процесса стандартизации, - это возможность программно извлекать интересующие параметры из обернутых моделей и наборов данных. На данный момент это в основном можно сделать «бесплатно», поскольку абстрактные классы уже имеют их, легко доступные и представленные в рамках общего API.

Объединяя все доступные параметры в базу данных, мы можем создать интерфейс для визуального просмотра и навигации в этом пространстве.

На сегодняшний день мы уже выпустили предварительный интерфейс для навигации по существующим библиотекам, моделям и наборам данных на stateoftheart.ai/libraries. По мере развития библиотеки библиотек мы намерены расширять наш интерфейсный интерфейс для демонстрации соответствующих параметров.

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