194K subscribers
3.56K photos
543 videos
17 files
4.3K links
Погружаемся в машинное обучение и Data Science

Показываем как запускать любые LLm на пальцах.

По всем вопросам - @haarrp

@itchannels_telegram -🔥best channels

Реестр РКН: clck.ru/3Fmqri
Download Telegram
⚡️ Zamba2-2.7B: небольшая гибридная языковая модель на Mamba.

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.

⚠️ Внимание:

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

Эксплуатация модели доступна с использованием 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())))


📌Лицензирование : Apache 2.0 license


🟡Страница проекта
🟡Arxiv
🟡Модель на HF
🖥Github [ Stars: 10 | Issues: 0 | Forks: 0]


@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
🌟 Lite Oute 2 Mamba2Attn: базовая и инструктивная SLM на архитектуре Mamba2.


OuteAI выпустила второе поколение легких моделей на 250М параметров каждая :

🟢 Lite Oute 2 Mamba2Attn 250M Base
🟢 Lite Oute 2 Mamba2Attn 250M-Instruct

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

Интегрировав Mamba2Attn, разработчикам удалось сохранить релевантную для своего класса малых моделей производительность, уменьшив при этом ее размер и вычислительные требования.

Базовая модель была обучена на 30 миллиардах токенов из корпуса данных, структура которого - 50% датасета dclm-baseline-1.0 b 50% fineweb-edu. Инструктивная версия прошла дообучение с SFT и DPO.

Обе модели имеют 4 слоя внимания из общего количества 32, такая конфигурация позволяет минимизировать потери при проверке, что подтверждено исследованием о соотношении слоев самовнимания к MLP.

▶️ Рекомендованные параметры для Instruct - модели:

🟢Temperature: 0.1 - 0.4
🟢Repetition Penalty: 1.10 - 1.12

▶️Ограничения:

🟠Непоследовательная точность. Примите во внимание, что обе модели - малого размера, инференс в некорорых задачах может быть неполным или неточным;
🟠Отсутствие глубины контекста. В некоторых задачах, модели могут не соответствовать ожиданиям глубины запоминания контекста;
🟠Баланс лаконичности. Модель иногда испытывает трудности с балансом между краткостью и детализацией, давая либо слишком краткие ответы, либо излишне повторяя заданную информацию.


📌Лицензирование : Apache 2.0 License


🟡Страница проекта
🟡Набор моделей
🟡Arxiv
🟡Сообщество в Discord


@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: специализированная модель для коррекции OCR.

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 ###. Это позволяет имитировать исторические стили письма и содержание.

▶️Квантованная 5-bit GGUF версия модели размером всего 127 МБ для локального запуска на llama.cpp


📌Лицензирование : Apache 2.0 License


🟡Модель
🟡Google Collab (инференс)
🟡Demo


@ai_machinelearning_big_data

#AI #SLM #ML #OCR
Please open Telegram to view this post
VIEW IN TELEGRAM
🌟Zamba2-mini: компактная и производительная модель с гибридной архитектурой.

Zamba2-mini - гибридная модель c 1.2B параметров, построенная из блоков state-space Mamba (SSM) и transformer.

Модель создана на общей архитектуре Zamba, но отличается от большей модели 2.7B тремя особенностями:

🟢добавлены rotary position embeddings;

🟢чередующиеся трансформерные блоки заменены одним общим;

🟢вместо LoRA на блоке MLP добавлены проекторы LoRA в блоки внимания.

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]))


▶️Для запуске на CPU - only, укажите use_mamba_kernels=False при загрузке модели с помощью AutoModelForCausalLM.from_pretrained.


📌Лицензирование : Apache 2.0 License.


🟡Страница проекта
🟡Arxiv
🟡Модель


@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

🟢Наблюдается переход от Multi-Head Attention (MHA) к Group-Query Attention (GQA) для повышения эффективности.
🟢Gated FFN с активацией SiLU и промежуточным соотношением 2-8 становится все более популярным выбором.
🟢Большинство моделей используют RMS-нормализацию и размер словаря более 50 тыс. токенов.
🟢Инновации в архитектуре пока ограничены.

Наборы данных для обучения

🟢The Pile был наиболее часто используемым набором данных, но в последнее время выбор стал более разнообразным, все чаще используются RefinedWeb и RedPajama.
🟢Современные SLM обучаются на значительно большем количестве токенов (обычно >1.5T), чем предполагает закон Chinchilla, что указывает на их «переобучение» для повышения производительности на устройствах с ограниченными ресурсами.

Алгоритмы обучения

🟠Чаще используются новые методы: Maximal Update Parameterization (µP), Knowledge Distillation и Two Stage Pre-training Strategy для повышения стабильности обучения и эффективности переноса знаний.

Возможности SLM

🟠За период с 2022 по 2024 год SLM показали значительное повышение производительности в разных задачах обработки естественного языка, превзойдя серию LLM LLaMA-7B.
🟠Семейство моделей Phi имеет самые высокие показатели точности, соперничая с LLaMA 3.1 8B.
🟠SLM, обученные на общедоступных датасетах, сокращают разрыв с моделями, обученными на закрытых данных, в задачах, связанных со здравым смыслом.

Контекстное обучение

🟢Большинство SLM обладают способностью к контекстному обучению, хотя она зависит от задачи.
🟢Более крупные модели из SLM более восприимчивы к контекстному обучению.

Latency и потребление VRAM

🟢Помимо размера модели, на задержку влияет и архитектура: количество слоев, ширина FFN, размер словаря и совместное использование параметров.
🟢Влияние архитектуры модели на скорость вывода более значительно на этапе предварительной обработки (prefill), чем на этапе декодирования.
🟢Использование памяти во время выполнения обычно линейно коррелирует с количеством параметров модели.

Влияние квантования и оборудования

🟠Преимущества квантования на этапе декодирования больше, чем на этапе предварительной обработки.
🟠Графические процессоры демонстрируют еще большее преимущество перед центральными процессорами на этапе предварительной обработки.


🟡Arxiv
🖥GitHub


@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: две гибридные SLM на 2.7 и 1.2 млрд. параметров.

Zamba2-Instruct - семейство инструктивных моделей на архитектуре Mamba2+Transformers для NLP-задач.

В семействе 2 модели:

🟢Zamba2-1.2B-instruct;
🟠Zamba2-2.7B-instruct.

Высокая производительность семейства по сравнению с релевантными 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.


▶️Локальная установка и инференс Zamba2-2.7B-Instruct:

# 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])))



📌Лицензирование : Apache 2.0 License.


🟡Набор моделей на HF
🖥GitHub


@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: локальный запуск LLM на IOS и Android.

PocketPal AI - проект Ai-ассистента на базе SLM, которые запускаются локально на iOS и Android без необходимости подключения к Интернету:

🟢PocketPal AI для iOS в App Store

🟢PocketPal AI для Android в Google Play

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

Список моделей в приложении (загружаются вручную из меню):

🟠H2O Danube 2 and 3;
🟠Microsoft Phi;
🟠Google Gemma 2;
🟠Qwen.

Помимо этих моделей, можно загрузить любую модель в формате GGUF через опцию "Add Local Model" в меню моделей приложения на устройстве.

В планах проекта расширение списка поддерживаемых моделей, улучшение функций пользовательского интерфейса и поддержка большего количества версий Android/

⚠️ Требования для локальная разработки проекта PocketPal:

🟢Xcode для iOS или Android Studio;
🟢Node.js версии 18 или выше;
🟢Yarn;
🟢React Native CLI.

▶️ Локальная установка и запуск для самостоятельной разработки :

# 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


📌Лицензирование: MIT License.


🖥GitHub

@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: набор SLM от Facebookresearch.

MobileLLM — семейство авторегрессионных языковых моделей на оптимизированной архитектуре трансформера для использования на устройствах с ограниченными ресурсами.

В создании MobileLLM были использованы: функция активации SwiGLU, шэринг эмбединга и grouped-query attention. Модели обучались на датасете в 1 трлн. токенов

MobileLLM-125M/350M более точны на 2,7%/4,3% по сравнению с другими моделями SoTA 125M/350M в задачах zero-shot рассуждений.

В открытый доступ опубликованы 4 модели c контекстом 2 тыс. токенов:

🟢MobileLLM-125M. 30 Layers, 9 Attention Heads, 3 KV Heads. 576 Token Dimension;

🟢MobileLLM-350M. 32 Layers, 15 Attention Heads, 5 KV Heads. 960 Token Dimension;

🟢MobileLLM-600M. 40 Layers, 18 Attention Heads, 6 KV Heads. 1152 Token Dimension;

🟢MobileLLM-1B. 54 Layers, 20 Attention Heads, 5 KV Heads. 1280 Token Dimension;

▶️ Инференс моделей возможен на HF Transformers или с использованием MobileLLM от facebookresearch.

▶️ Код для файнтюна и тренировки семейства MobileLLM доступен в репозитории MobileLLM.


📌Лицензирование: CC-BY-NC-4.0 License.


🟡Коллекция моделей на HF
🟡Arxiv
🖥GitHub


@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
🌟 SmolLM2: второе поколение компактных LLM от HuggingFace.

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:

SmolLM2-1.7B🟢SmolLM2-1.7B-Instruct🟢Instruct GGUF

SmolLM2-360M🟠SmolLM2-360M-Instruct 🟠Instruct GGUF

SmolLM2-135M 🟠SmolLM2-135M-Instruct 🟠Instruct GGUF от комьюнити


▶️Пример запуска модели SmolLM2-1.7B в полной точности на Transformers :

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]))


📌Лицензирование: Apache 2.0 License.


🟡Коллекция моделей на HF
🟡Demo SmolLM2 1.7B


@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: Базовая и инструктивная модели от NVIDIA.

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.

▶️Пример инференса Hymba-1.5B-Base:

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}")


📌 Лицензирование: NVIDIA Open Model License Agreement


🟡Набор моделей на HF

@ai_machinelearning_big_data

#AI #ML #SLM #Hymba #Nvidia
Please open Telegram to view this post
VIEW IN TELEGRAM