Zamba2-2.7B - это гибридная модель, состоящая из блоков пространства состояний (state-space) и трансформеров. Она сохраняет качество инференса модели 3-4В плотности, требуя при этом вычислительных ресурсов на уровне модели плотностью 1-2B.
Такие характеристики были получены за счет использования блоков Mamba2, чередования блоков внимания в схеме "А-В-А-В" и применения LoRA projector для каждого общего MLP-блока.
Zamba2-2.7B использует токенизатор Mistral v0.1 и была предварительно обучена на 3T токенов текста и кода, полученных из открытых источников, включая датасет Zyda.
По завершению обучения, модель была подвергнута дополнительной фазе агрессивного снижения скорости обучения на смеси из 100B высококачественных токенов.
Согласно заверению создателей, Zamba2-2.7B достигает лучших результатов среди моделей аналогичного масштаба, таких как Gemma2-2.7B, StableLM-3B, OpenELM-3B и Phi2-2.7B.
⚠️ Внимание:
Эксплуатация модели доступна с использованием Zyphra's fork of transformers или с помощью кода из репозитория разработчиков модели.
# Сlone and install
git clone https://github.com/Zyphra/Zamba2.git
cd Zamba2
pip install -e
# Install core mamba dependencies
pip install -U mamba-ssm causal-conv1d
# Inference
from mamba_model import MambaModel
from mamba_config import MambaConfig
import torch
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-2.7B")
input_text = 'A funny prompt would be '
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")["input_ids"].transpose(0,1)
model = MambaModel.from_pretrained(model_name = "Zyphra/Zamba2-2.7B").cuda().half()
tokens_to_generate = 20
model.eval()
with torch.no_grad():
for _ in range(tokens_to_generate):
out = model(input_ids)
out_last = out[:, -1]
idx = torch.argmax(out_last)[None, None]
input_ids = torch.cat((input_ids, idx), dim=0)
input_ids = input_ids.transpose(0, 1)[0]
print(repr(tokenizer.decode(input_ids.cpu().numpy().tolist())))
@ai_machinelearning_big_data
#AI #ML #SLM #Mamba
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍14🥰2🎉2🤔1
OuteAI выпустила второе поколение легких моделей на 250М параметров каждая :
В модели интегрирован механизм Mamba2Attn - усовершенствованный метод внимания, который повышает способность модели фокусироваться на важных частях входных данных. Этот механизм особенно полезен для задач NLP, требующих понимания сложных закономерностей или взаимосвязей в данных.
Интегрировав Mamba2Attn, разработчикам удалось сохранить релевантную для своего класса малых моделей производительность, уменьшив при этом ее размер и вычислительные требования.
Базовая модель была обучена на 30 миллиардах токенов из корпуса данных, структура которого - 50% датасета dclm-baseline-1.0 b 50% fineweb-edu. Инструктивная версия прошла дообучение с SFT и DPO.
Обе модели имеют 4 слоя внимания из общего количества 32, такая конфигурация позволяет минимизировать потери при проверке, что подтверждено исследованием о соотношении слоев самовнимания к MLP.
@ai_machinelearning_big_data
#AI #SLM #Mamba2 #ML #Oute
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤4🔥2🦄2
OCRonos-Vintage — это небольшая модель со 124 миллионами параметров и небольшим контекстным окном в 1024 токена, которая была предварительно обучена с нуля на 18 миллиардах токенов датасета материалов архивов культурного наследия для задачи коррекции OCR. Несмотря на свой небольшой размер, она обеспечивает качество коррекции, сопоставимое с большими моделями, такими как GPT-4, при этом эффективна для работы на CPU.
Модель обучалась в течение 2 эпох с использованием фреймворка обучения llm.c на наборе данных из Library of Congress, Internet Archive и Hathi Trust. Обучение проводилось на 4 графических процессорах H100 и заняло два с половиной часа. OCRonos-Vintage использует токенизатор GPT-2.
OCRonos-Vintage можно загрузить и использовать для инференса так же, как модель GPT-2. Она принимает OCR-текст в качестве входных данных и генерирует исправленный текст. Входные данные и данные инференса разделяются специальными тегами: "### Text ###" и "### Correction ###".
Модель также можно использовать для генерации стилизованного исторического текста, если дать подсказку, начинающуюся с ### Text ###. Это позволяет имитировать исторические стили письма и содержание.
@ai_machinelearning_big_data
#AI #SLM #ML #OCR
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24❤5🔥2🥰1🎄1
Zamba2-mini - гибридная модель c 1.2B параметров, построенная из блоков state-space Mamba (SSM) и transformer.
Модель создана на общей архитектуре Zamba, но отличается от большей модели 2.7B тремя особенностями:
Zamba2-mini использует токенизатор Mistral v0.1 и была предварительно обучена на 3 триллионах токенов текстовых данных и коде различных языков программирования, полученных из открытых веб-наборов данных, к которым был добавлен собственный корпу данных Zyda.
Впоследствии, на втором этапе Zamba2-mini была подвергнута дополнительной фазе агрессивного снижения скорости обучения на смеси из 100B высококачественных токенов.
Zamba2-mini показала в тестах результаты, сопоставимые с моделями с параметрами <2B и может конкурировать с некоторыми LLM большего размера.
Благодаря уникальной гибридной архитектуре SSM Zamba2-mini демонстрирует низкие задержки логического вывода и быструю генерацию при значительно меньшем потреблении VRAM, чем другие модели такой же плотности параметров на основе трансформеров.
Такие характеристики делает ее идеальной универсальной моделью для приложений на устройствах.
⚠️ Примечание: Zamba2-mini еще не полностью совместима со всеми фреймворками и инструментами HuggingFace.
Реализацию Zamba2-1.2B для Pytorch можно найти здесь.
# Clone repositiry
git clone https://github.com/Zyphra/transformers_zamba2.git
#Install requirments:
cd transformers_zamba2
pip install -e .
pip install accelerate
#Inference
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-1.2B")
model = AutoModelForCausalLM.from_pretrained("Zyphra/Zamba2-1.2B", device_map="cuda", torch_dtype=torch.bfloat16)
input_text = "A funny prompt would be "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))
@ai_machinelearning_big_data
#AI #SLM #Mamba #ML #Zamba2mini
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7🔥5😁3
Исследование, проведенное Университетом Кембриджа, Пекинским университетом почты и телекоммуникаций о малых языковых моделях, опубликованных в открытом доступе в период с 2022-2024 гг.
Авторами были проанализированы 59 современных открытых SLM, их архитектуру, используемые наборы данных для обучения и алгоритмы. Целевая группа состояла из моделей с 100M–5B параметрами, построенных на архитектуре декодера-трансформера, которые подходят для устройств от носимых гаджетов до смартфонов и планшетов.
Выводы, к которым пришли авторы:
Архитектура SLM
Наборы данных для обучения
Алгоритмы обучения
Возможности SLM
Контекстное обучение
Latency и потребление VRAM
Влияние квантования и оборудования
@ai_machinelearning_big_data
#AI #ML #SLM #Paper #Arxiv
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤6⚡4🦄4🔥1
Zamba2-Instruct - семейство инструктивных моделей на архитектуре Mamba2+Transformers для NLP-задач.
В семействе 2 модели:
Высокая производительность семейства по сравнению с релевантными Transformers-only моделями достигается за счет конкатенации эмбедингов модели с входными данными для блока внимания и использование LoRA projection matrices к общему MLP-слою.
Модели файнтюнились (SFT+DPO) на instruct-ориентированных наборах данных (ultrachat_200k, Infinity-Instruct, ultrafeedback_binarized, orca_dpo_pairs и OpenHermesPreferences).
Тесты Zamba2-Instruct продемонстрировали внушительную скорость генерации текста и эффективное использование памяти, обходя MT-bench более крупные по количеству параметров модели/ (Zamba2-Instruct-2.7B превзошла Mistral-7B-Instruct-v0.1, а Zamba2-Instruct-1.2B - Gemma2-2B-Instruct)
⚠️ Для запуска на СPU укажите
use_mamba_kernels=False
при загрузке модели с помощью AutoModelForCausalLM.from_pretrained
.# Clone repo
git clone https://github.com/Zyphra/transformers_zamba2.git
cd transformers_zamba2
# Install the repository & accelerate:
pip install -e .
pip install accelerate
# Inference:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("Zyphra/Zamba2-2.7B-instruct")
model = AutoModelForCausalLM.from_pretrained("Zyphra/Zamba2-2.7B-instruct", device_map="cuda", torch_dtype=torch.bfloat16)
user_turn_1 = "user_prompt1."
assistant_turn_1 = "assistant_prompt."
user_turn_2 = "user_prompt2."
sample = [{'role': 'user', 'content': user_turn_1}, {'role': 'assistant', 'content': assistant_turn_1}, {'role': 'user', 'content': user_turn_2}]
chat_sample = tokenizer.apply_chat_template(sample, tokenize=False)
input_ids = tokenizer(chat_sample, return_tensors='pt', add_special_tokens=False).to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=150, return_dict_in_generate=False, output_scores=False, use_cache=True, num_beams=1, do_sample=False)
print((tokenizer.decode(outputs[0])))
@ai_machinelearning_big_data
#AI #ML #SLM #Zamba2 #Instruct
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤7🔥5👏1
PocketPal AI - проект Ai-ассистента на базе SLM, которые запускаются локально на iOS и Android без необходимости подключения к Интернету:
Приложения на обеих платформах позволяет выбирать модели, настраивать параметры инференса (системный промпт, температура, шаблоны чата и BOS), следить за показателями производительности в реальном времени и имеют функцию автоматической выгрузки моделей из памяти устройства, когда приложение в фоновом режиме.
Список моделей в приложении (загружаются вручную из меню):
Помимо этих моделей, можно загрузить любую модель в формате GGUF через опцию "Add Local Model" в меню моделей приложения на устройстве.
В планах проекта расширение списка поддерживаемых моделей, улучшение функций пользовательского интерфейса и поддержка большего количества версий Android/
⚠️ Требования для локальная разработки проекта PocketPal:
# Clone repository
git clone https://github.com/a-ghorbani/pocketpal-ai
cd pocketpal-ai
# Install dependencies
yarn install
# Install dependencies iOS only
cd ios
pod install
cd ..
# Run App via iOS Simulator
yarn ios
# Run App via Android Simulator
yarn android
@ai_machinelearning_big_data
#AI #ML #SLM #iOS #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍12🔥9😁1
MobileLLM — семейство авторегрессионных языковых моделей на оптимизированной архитектуре трансформера для использования на устройствах с ограниченными ресурсами.
В создании MobileLLM были использованы: функция активации SwiGLU, шэринг эмбединга и grouped-query attention. Модели обучались на датасете в 1 трлн. токенов
MobileLLM-125M/350M более точны на 2,7%/4,3% по сравнению с другими моделями SoTA 125M/350M в задачах zero-shot рассуждений.
В открытый доступ опубликованы 4 модели c контекстом 2 тыс. токенов:
@ai_machinelearning_big_data
#AI #ML #SLM #MobileLLM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤7🔥3🎉3
Hugging Face представила SmolLM2, новую серию SLM, оптимизированных для работы на устройствах c ограниченными ресурсами и предназначенных для выполнения задач генерации и обобщения текста на английском языке и вызова функций.
Модели SmolLM2 были обучены на миксе из наборов данных FineWeb-Edu, DCLM и Stack. Тестирование после обучения показало превосходство старшей модели SmolLM2-1.7B над Meta Llama 3.2 1B и Qwen2.5-1.5B.
Модели доступны в трёх конфигурациях: 135М, 360М и 1.7B параметров, каждая модель имеет свою Instruct-версию, а 1.7B и 360М еще и официальные квантованные версии GGUF:
from transformers import AutoModelForCausalLM, AutoTokenizer
checkpoint = "HuggingFaceTB/SmolLM2-1.7B"
device = "cuda" # for GPU usage or "cpu" for CPU usage
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
inputs = tokenizer.encode("Gravity is", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))
@ai_machinelearning_big_data
#AI #ML #SLM #Huggingface #SmolLM2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥7❤3
Hymba-1.5B-Base имеет embedding size 1600, 25 attention heads, MLP 5504, 32 слоя, 16 состояний SSM, 3 слоя полного внимания, остальные - внимания со скользящим окном.
В отличие от стандартного трансформера, каждый слой внимания в Hymba имеет гибридную комбинацию стандартных attention heads и Mamba heads в параллельном исполнении. Hymba использует технологии Grouped-Query Attention (GQA) и Rotary Position Embeddings (RoPE).
Hymba обучалась на 1.5 трлн токенах в 2 этапа предварительного обучения и 3 этапами посттренининга.
Hymba-1.5B-Instruct - файнтон Hymba-1.5B-Base на комбинации открытых наборов данных инструкций и собранных собственными силами синтетических датасетов.
Эта модель настраивалась с помощью SFT и DPO и способна как в математические рассуждения и вызов функций, так и в ролевые сценарии.
⚠️ В Hymba-1.5B-Instruct используется кастомный шаблон промпта, который был интегрирован в токенизатор и может быть применен с помощью
tokenizer.apply_chat_template.
from transformers import LlamaTokenizer, AutoModelForCausalLM, AutoTokenizer, AutoModel
import torch
# Load the tokenizer and model
repo_name = "nvidia/Hymba-1.5B-Base"
tokenizer = AutoTokenizer.from_pretrained(repo_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(repo_name, trust_remote_code=True)
model = model.cuda().to(torch.bfloat16)
# Chat with Hymba
prompt = input()
inputs = tokenizer(prompt, return_tensors="pt").to('cuda')
outputs = model.generate(**inputs, max_length=64, do_sample=False, temperature=0.7, use_cache=True)
response = tokenizer.decode(outputs[0][inputs['input_ids'].shape[1]:], skip_special_tokens=True)
print(f"Model response: {response}")
@ai_machinelearning_big_data
#AI #ML #SLM #Hymba #Nvidia
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤7🔥4