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
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
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
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
Исследование, проведенное Университетом Кембриджа, Пекинским университетом почты и телекоммуникаций о малых языковых моделях, опубликованных в открытом доступе в период с 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
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
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
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
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
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