287K subscribers
3.98K photos
684 videos
17 files
4.55K links
Погружаемся в машинное обучение и Data Science

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

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

@itchannels_telegram -🔥best channels

Реестр РКН: clck.ru/3Fmqri
加入频道
🌟 Гайдбук по оценке больших языковых моделей от Hugging Face

Hugging Face выложила на Github руководство по оценке LLM.

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

Особое внимание уделяется тому, как избежать проблем с инференсом модели и сделать результаты одинаковыми. В руководстве есть советы о том, как сделать данные чистыми, как использовать шаблоны для общения с LLM и как анализировать неожиданные плохие результаты.

Если вы ничего не знаете об оценке и бенчмарках, вам следует начать с разделов Basics в каждой главе, прежде чем погружаться глубже. В разделе базовые знания вы также найдете пояснения, которые помогут вам разобраться в важных темах LLM: например, как работает инференс модели и что такое токенизация.

Более прикладными разделы: советы и рекомендации, устранение неполадок и разделы, посвященные дизайну.

▶️Оглавление:

🟢Автоматические бенчмарки
🟢Оценка человеком
🟢LLM-судья
🟢Устранение неполадок
🟢Базовые знания

📌 Планы на будущие гайды:

🟠Описание автоматических метрик;
🟠Какие основные моменты вы всегда должны учитывать при построении задачи;
🟠Зачем нужна оценка LLM;
🟠Почему сравнивать модели между собой - это сложно.

🖥Github

@ai_machinelearning_big_data

#AI #ML #LLM #Huggingface #Guide
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥128🙉1
⚡️ Ollama получила поддержку запуска моделей GGUF с Huggingface.

Ollama, приложение, основанное на llama.cpp, для локального взаимодействия с LLM получила возможность запускать одной командой любую GGUF модель, размещенную на Huggingface без создания нового Modelfile.

На сегодняшний день на HF около 45 тысяч моделей в формате GGUF, и теперь можно запустить любую из них одной командой ollama run. Также доступна настройка параметров запуска: выбор типа квантования и системного промпта.

▶️Быстрый запуск:

ollama run hf.co/{username}/{repository}


▶️Запуск с выбором типа квантования:

ollama run hf.co/{username}/{repository}:{quantization}


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

Он создается на основе встроенных метаданных tokenizer.chat_template, хранящихся в файле GGUF. Если в GGUF нет встроенного шаблона или необходимо настроить свой шаблон чата, нужно создать новый файл с именем template.

Шаблон должен быть шаблоном Go, а не шаблоном Jinja. Например:

{{ if .System }}<|system|>
{{ .System }}<|end|>
{{ end }}{{ if .Prompt }}<|user|>
{{ .Prompt }}<|end|>
{{ end }}<|assistant|>
{{ .Response }}<|end|>


📌 Список всех доступных параметров доступен в документации репозитория Ollama.

⚠️ В качестве доменного имени в команде запуска можно использовать доменные имена как hf.co, так и huggingface.co.


🟡Документация
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM #Ollama #Huggingface
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
33👍21🔥11👏51😁1
🌟 UAG: методика ускорения генерации LLM с любыми моделями в качестве ассистента.

В использовании LLM всегда хочется увеличения скорости генерации без ущерба для качества. Есть метод ассистированной генерации, который зарекомендовал себя как один из компромиссных решений. Однако традиционные техники его применения требуют, чтобы целевая и вспомогательная LLM использовали один и тот же токенизатор, что ограничивает выбор моделей и возможность ощутимого ускорения.

Intel Labs и Hugging Face разработали метод универсальной ассистированной генерации (UAG) , который позволяет использовать любую модель в качестве ассистента, независимо от ее токенизатора. Метод открывает новые возможности для ускорения практически любой LLM, даже тех, для которых не существует специализированных маленьких версий для инференса ассистированной генерации.

UAG основан на принципе двустороннего преобразования токенизаторов. После того как модель-ассистент генерирует последовательность токенов, эти токены конвертируются в текст, который затем токенизируется с помощью токенизатора целевой модели. После проверки целевой моделью, токены целевой модели преобразуются обратно в формат токенов модели-ассистента. Для повышения точности перекодирования используется контекстное окно, состоящее из группы предшествующих токенов.

Чтобы оценить UAG, были проведены тесты с различными комбинациями целевых LLMи моделей-ассистентов. Результаты показали, что UAG дает ускорение декодирования 1.5-2.0x по сравнению с генерацией без ассистента. Например, скорость генерации кода с помощью CodeLlama-13b увеличилась в 1.9 раза при использовании tiny_starcoder_py в качестве модели-ассистента.

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

📌 UAG интегрирован в релиз Huggingface Transformers 4.46.0


▶️Для использования UAG нужно передать tokenizer и assistant_tokenizer в generate() :


from transformers import AutoModelForCausalLM, AutoTokenizer

prompt = "Alice and Bob"
checkpoint = "google/gemma-2-9b"
assistant_checkpoint = "double7/vicuna-68m"

assistant_tokenizer = AutoTokenizer.from_pretrained(assistant_checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
inputs = tokenizer(prompt, return_tensors="pt")

model = AutoModelForCausalLM.from_pretrained(checkpoint)
assistant_model = AutoModelForCausalLM.from_pretrained(assistant_checkpoint)
outputs = model.generate(**inputs, assistant_model=assistant_model, tokenizer=tokenizer, assistant_tokenizer=assistant_tokenizer)
tokenizer.batch_decode(outputs, skip_special_tokens=True)


👉Статья на HF


@ai_machinelearning_big_data

#AI #ML #LLM #UAG #Huggingface
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥115🙏1
⚡️ 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
👍197🔥3🎉3
🌟 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
👍20🔥73
📌Туториал по файнтюну Qwen2-VL-7B с использованием экосистемы Hugging Face.

Статья на HF из цикла Open-Source AI Cookbook c подробным пошаговым описанием и примерами кода процесса тонкой настройки VLM Qwen2-VL-7B в области ответов на вопросы по изображениям с использованием библиотеки Transformer Reinforcement Learning (TRL). В качестве целевого датасета используется ChartQA, который содержит диаграммы разных типов в паре с вопросами и ответами.

Для обучения модели демонстрируется методы Supervised Fine-Tuning (SFT) с использованием библиотеки TRL, QLoRA, которая квантует веса LoRA, обеспечивая более низкие требования к памяти и повышенную эффективность обучения.

Отдельным разделом выделен процесс подготовки данных к обучению с помощью функции collate_fn, которая выполняет корректное извлечение и пакетную обработку данных и их форматирование для модели. Обучение модели осуществляется с помощью класса SFTTrainer.

В результате модель научилась отвечать на вопросы в соответствии с используемым датасетом. Оценить готовый файнтюн можно в демо на HF Space.

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

▶️ Блокнот на Google Collab для практических экспериментов. Для его запуска понадобится платный тариф с GPU А100.


▶️Структура туториала по разделам:

🟢Установка среды

🟢Загрузка датасета

🟢Загрузка модели и проверка производительности

🟢Файнтюн модели с помощью TRL

🟠Загрузка квантованной модели для обучения
🟠Настройка QLoRA и SFTConfig
🟠Обучение модели

🟢Тестирование готовой модели

🟢Сравнение обученной модели с базовой + промптинг

🟢Дополнительные ресурсы для более глубокого изучения VLM


🔜 Статья на HuggingFace


@ai_machinelearning_big_data

#AI #ML #VLM #HuggingFace #Tutorial
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍225🔥5🥰1😁1🙈1
🌟 SmolTalk: синтетический англоязычный датасет для обучения LLM.

SmolTalk - это синтетический датасет, разработанный HuggingFace для обучения SmolTalk: новый синтетический набор данных для обучения больших языковых моделей LLM с учителем. Он состоит из 2 млн. строк и был использован для создания семейства моделей SmolLM2-Instruct. SmolTalk включает в себя как новые, так и существующие наборы данных.

Новые наборы данных:

🟢Smol-Magpie-Ultra (400 тыс. строк);
🟢Smol-constraints (36 тыс. строк);
🟢Smol-rewrite (50 тыс. строк);
🟢Smol-summarize (101 тыс. строк).

Существующие общедоступные наборы данных:

🟠OpenHermes2.5 (100 тыс. строк);
🟠MetaMathQA (50 тыс. строк);
🟠NuminaMath-CoT (1120 тыс. строк);
🟠Self-Oss-Starcoder2-Instruct (1120 тыс. строк);
🟠SystemChats2.0 (30 тыс. строк);
🟠LongAlign (примеры на английском языке с менее 16 тыс. токенов);
🟠Everyday-conversations (50 тыс. строк);
🟠APIGen-Function-Calling (80 тыс. строк);
🟠Explore-Instruct-Rewriting (30 тыс. строк).

SmolTalk сравнили недавно выпущенным набором данных Orca AgentInstruct 1M, обучив SmolLM2 на обоих наборах данных с использованием одинаковой конфигурации обучения.

Результаты показали, что SmolTalk показал значительные улучшения в производительности модели, особенно в задачах математики, программирования и следованию системным промптам. Наблюдались также значительные улучшения в масштабе 7B при обучении Mistral-7B на SmolTalk, особенно по показателям IFEval, BBH, GS8Mk и MATH.

▶️Загрузка датасета для трейна:

from datasets import load_dataset

ds = load_dataset("HuggingFaceTB/smoltalk", "all", split="train")
# to load the train split of a specific subset such as smol-magpie-ultra, you can do
ds = load_dataset("HuggingFaceTB/smoltalk", "smol-magpie-ultra", split="train")


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


🟡Датасет
🖥GitHub


@ai_machinelearning_big_data

#AI #ML #LLM #HuggingFace #Dataset
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍237🔥4
🌟 SmolVLM: набор компактных VLM от HuggingFace - Base, Synthetic и Instruct.

SmolVLM - серия компактных VLM с 2 млрд. параметров, отличающихся высокой эффективностью использования памяти и могут быть развернуты на локальных устройствах с ограниченными ресурсами.

Архитектура SmolVLM основана на Idefics3, с несколькими отличиями:

🟢В качестве языковой основы используется SmolLM2 1.7B вместо Llama 3.1 8B;

🟢Визуальная информация сжимается в 9 раз с помощью стратегии pixel shuffle, по сравнению с 4-кратным сжатием в Idefics3;

🟢Используются патчи размером 384x384 пикселей, а не 364x364;

🟢Визуальная основа модели изменена на shape-optimized SigLIP с патчами 384x384 пикселей и внутренними патчами 14x14;

🟢Контекстное окно SmolLM2 было расширено до 16 тыс. токенов для поддержки работы с несколькими изображениями.

Модель кодирует каждый патч изображения 384x384 в 81 токен, что позволяет ей обрабатывать тестовые запросы и изображения с использованием всего 1.2 тыс. токенов, в то время как Qwen2-VL использует 16 тыс. токенов. Это преимущество приводит к значительно более высокой скорости предварительной обработки (в 3,3-4,5 раза) и генерации (в 7,5-16 раз) по сравнению с Qwen2-VL.

Для самостоятельной тонкой настройки SmolVLM можно использовать transformers и TRL. Разработчиками представлен блокнот для файнтюна на VQAv2 с использованием LoRA, QLoRA или полной тонкой настройки. SmolVLM интегрирован с TRL для DPO через CLI.

⚠️ При batch sizes=4 и 8-битной загрузке QLoRA файнтюн потребляет около ~16 GB VRAM


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


🟡Статья на HF
🟡Набор моделей
🟡Demo


@ai_machinelearning_big_data

#AI #ML #SmallVLM #Huggingface
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2010🔥7
🌟 TGI v3: Новая архитектура ускоренного инференса LLMs.

TGI v3 — новая версия архитектуры для обработки естественного языка, разработанная Hugging Face. TGI v3 демонстрирует значительный прирост производительности, особенно при работе с длинными запросами.

Улучшения v3:

🟢оптимизированные ядра;
🟢эффективная структура кэширования префиксов;
🟢улучшенное управление вычислительными ресурсами.

Flashinfer и flashdecoding — новые ядра быстрой обработки текста. Оптимизированная структура кэширования позволяет быстро находить совпадения даже для очень длинных запросов.

TGI v3 оценивалась в реалистичных сценариях на коротких и длинные запросах. Результаты тестов показали, что TGI v3 обрабатывает в 3 раза больше токенов, чем vLLM, а скорость обработки увеличилась в 13 раз для запросов длиной 200K+ токенов.

Хотя результаты работы TGI v3 впечатляют, следует учитывать некоторые ограничения:

⚠️ Если в среде не хватает места в kv-кэше, это может привести к конфликту. Чтобы избежать этого эффекта, следует установить ограничение --max-total-tokens.

⚠️ В сценариях, где несколько реплик находятся за одним эндпоинтом рекомендуется использовать балансировку нагрузки на зависимые сеансы, чтобы заставить каждого пользователя отправлять свои запросы на одну и ту же реплику.

🔜 Полная статья с описанием TGI v3 доступна на HF.


🖥 GIthub


@ai_machinelearning_big_data

#AI #ML #LLM #HuggingFace #TGI
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥73
📌Cовременные методов позиционного кодирования в Transformers: от простых целых чисел до RoPE.

Познавательная статья Кристофера Флитвуда, ML-инженера HuggingFace об эволюции методов позиционного кодирования в моделях-трансформерах, начиная с простых подходов и заканчивая Rotary Positional Encoding (RoPE), используемым в современных моделях, таких как Llama 3.2.

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

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

В статье описываются желательные свойства идеальной схемы позиционного кодирования: уникальность кодирования для каждой позиции, линейная зависимость между закодированными позициями, обобщение на более длинные последовательности, детерминированный процесс генерации и возможность расширения на множественные измерения.

Начальные методы, например, добавление целочисленного значения позиции к эмбеддингу токена, были признаны несостоятельными из-за проблем с диапазоном значений и низкой разделительной способностью. Альтернативой стало бинарное позиционное кодирование, которое, однако, не обеспечивало достаточной гладкости и непрерывности для оптимизации.

Синусоидальное позиционное кодирование, описанное в «Attention is all you need», стало важным шагом вперед.

Оно использует синусоидальные и косинусоидальные функции с разными частотами для кодирования позиции, позволяя модели изучать отношения между позициями.

RoPE кодирует относительные позиции, применяя матрицу вращения к парам компонентов векторов запросов (q) и ключей (k), что позволяет модели эффективно кодировать позиционную информацию без изменения нормы векторов. Это достигается путем умножения пар элементов векторов на матрицу вращения.

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


🔜 Статья на HuggingFace


@ai_machinelearning_big_data

#AI #ML #LLM #RoPE #Huggingface #Blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍276🔥3🤔2