Needle: ядро автоматизации для маломощных устройств

Needle: ядро автоматизации для маломощных устройств

Needle — это ядро автоматизации на основе моделей для маломощных устройств, таких как смартфоны, носимые гаджеты и микроконтроллеры. Оно позволяет сокращать размер моделей до 8-29 МБ, обеспечивая при этом возможность целевых вызовов функций, структурированного извлечения данных и текстового внедрения.

Проект выделяется среди альтернатив тем, что он интегрирует несколько функций в одном небольшом бинарном файле, что особенно актуально для устройств с ограниченными ресурсами. Needle не просто генерирует текст, а также предоставляет точные вызовы функций на основе пользовательских запросов и может возвращать организованные данные из неструктурированного текста, что облегчит жизнь разработчикам приложений для IoT.

Модель написана на Python и требует Docker для запуска, что дает возможность быстро разрабатывать и тестировать приложения. Обрати внимание, что Needlе всё еще находится на ранней стадии, и могут быть недоработки или ограничения.

Проект Needle представляет собой основу для создания крупных моделей машинного обучения, предназначенных для мобильных устройств, носимых гаджетов, роботов, умных домов, автомобилей и микроконтроллеров. Needle — это компактная модель, занимающая всего 8-29 МБ, которая строится на основе сети Simple Attention Network. Основная цель проекта — обеспечить высокую эффективность при работе с инструментами, превышая производительность моделей в 10 раз большего размера на мобильных вызовах инструментов.

Needle предлагает следующие ключевые функции:

  • Вызовы инструментов: модель точно выбирает и выполняет функции на основе запросов пользователя, заполняя все аргументы по заданной функции. Если функция не поддерживается, возвращается пустой список.
  • Структурированная экстракция: модель принимает неорганизованный текст и возвращает структурированные данные, такие как счета, бронирования и уведомления.
  • Векторизация текста: модель преобразует предложения в векторы, что позволяет приложениям производить локальный поиск и сопоставление.
  • Обработка речи: вместе с Needle поставляется модель speech-to-text под названием Whistle, которая может обрабатывать аудиоданные и возвращать результаты в виде вызовов инструментов.

Установка и запуск

Чтобы установить Needle, достаточно выполнить следующую команду:

pip install cactus-needle

Модель доступна для тестирования в браузере на сайте cactuscompute.com/needle. Ошибки, улучшения и предложения можно обсудить через pull request на GitHub. Каждый вызов модели возвращает JSON-объект с вызовами функций, размышлениями модели и оценками уверенности, что позволяет более точно реагировать на запросы пользователя.

Пример использования

Вот пример, как можно использовать Needle для получения текущей погоды в конкретном городе:

import needle

@needle.tool
def get_weather(city: str):
    "Get the current weather for a city."
    return {"city": city, "temp_c": 27, "sky": "clear"}

agent = needle.Needle(tools=[get_weather])
print(agent.run("what's it like in Lagos right now?")["results"])
# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]

Ограничения

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

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

Открыть на GitHub: cactus-compute/needle →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте