cactus README

The project's README from github.com/cactus-compute/cactus. As one markdown file: README.md.

Cactus Compute - Sub-50mb Super Intelligence For Consumer Devices

Run text, speech and vision models locally with one Python package. Cactus provides tool calling, structured extraction, transcription, image understanding and model fine-tuning.

Install

pip install -U cactus-compute

Python 3.9 or later. The package downloads and caches the engine and requested model weights on first use. Inference runs locally and does not require JAX.

Agents

Needle 3 calls tools, extracts structured data and embeds text.

import cactus

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

with cactus.Cactus(tools=[get_weather]) as agent:
    print(agent.run("What's the weather in Lagos?")["results"])

run() executes your functions and returns their results. Use complete() when you want to inspect the proposed calls before executing them.

Voice

Whistle transcribes speech in seven languages, with word timestamps and speech embeddings.

import cactus

print(cactus.transcribe("clip.wav")["text"])

Use a 16 kHz WAV file. Install cactus-compute[mic] for other sample rates or microphone capture.

Vision

Mirage describes images and extracts structured data.

import cactus

print(cactus.Mirage().describe("photo.png"))

Documentation

Migrating from cactus-needle? Use import cactus and the cactus command. Needle 2 remains on the legacy branch with cactus-compute<4. The earlier general inference SDK is now cactus-engine.

Anonymous Python usage counts can be disabled with CACTUS_TELEMETRY=0. See LICENSE for the Apache 2.0 license.

cactus (cactus-compute/cactus)

Searching Database…

14.5K ·GitHub
Что это такое?Needle 2 — открытая модель с 45 миллионами параметров для вызова инструментов, работы с устройствами и структурированного извлечения данных. Она поставляется в виде одного бинарника размером 14 МБ и держит целую сессию примерно в 28 МБ оперативной памяти. Этот репозиторий — её Python-пакет для инференса, дообучения с LoRA и экспорта.
Это Python-библиотека или модель, которая работает на устройствах?И то и другое, но на разных этапах: сам репозиторий — это Python-пакет, который ставится через pip, а на выходе получается самодостаточная модель .cact для движков на устройстве. Проект рассчитан на телефоны, носимые устройства, умные дома, роботов, автомобили и микроконтроллеры.
Как его запустить?Установите пакет командой pip install cactus-needle, опишите свои инструменты и вызывайте их из Python. Движок инференса один раз скачивается с Hugging Face и кэшируется — больше ничего собирать не нужно. Как настроить всё офлайн для устройств без интернета, описано в doc/apis.md.
Насколько длинным может быть разговор, прежде чем закончится память?Модель держит скользящее окно на 256 токенов, а инструменты закреплены как KV sink, поэтому память держится около 28 МБ, как бы долго ни шла сессия. Но само окно небольшое: для больших каталогов инструментов встроенная retrieval-голова показывает только пять самых подходящих инструментов за раз.
Он отправляет мои данные куда-то?При инференсе никакая сеть не используется. Cactus собирает только анонимную телеметрию об использовании — имя функции, версию пакета и операционную систему, но ни ваши запросы, ни ответы, ни данные не передаются. Сбор можно отключить переменными NEEDLE_TELEMETRY=0 или DO_NOT_TRACK=1.
Как он сравнивается с другими маленькими моделями?По бенчмаркам из README он соперничает с FunctionGemma 270M, LFM2.5 230M и Apple FM, при этом в 5–70 раз меньше и работает на 2 битах против их f16.
Можно попробовать прямо в браузере, ничего не устанавливая?Да — в Playground можно выбрать готовый пресет, отредактировать инструменты или промпт и запустить, а последующие запросы продолжают тот же разговор. Кнопка Finetune запускает пайплайн дообучения и отдаёт готовый файл .cact для скачивания.
Какая архитектура у него внутри?Это Simple Attention Network: FFN заменён на Hadamard MLP, плюс внимание GQA, память «ключ–значение» на основе engram и многополосные hyper-connections. Подробности устройства и абляции — в статье на arXiv:2607.18363.
Умеет ли он извлекать структурированные данные из обычного текста, а не только вызывать инструменты?Да — опишите нужную структуру как Pydantic-модель и вызовите extract(); на выходе получите типизированный объект. Работа с сырыми JSON-схемами и ручное управление циклом через complete() описаны в doc/apis.md.
Size
4.8 MB
Stars
14.5K
Updated
CommitNov 05
Age
8mo
Commits · 90 Days