Hugging Face выложила на Github руководство по оценке LLM.
В нем собраны различные способы оценки модели, руководства по разработке собственных оценок, а также советы и рекомендации из практического опыта. В руководстве рассказывается о разных способах оценки: с помощью автоматических тестов, людей или других моделей.
Особое внимание уделяется тому, как избежать проблем с инференсом модели и сделать результаты одинаковыми. В руководстве есть советы о том, как сделать данные чистыми, как использовать шаблоны для общения с LLM и как анализировать неожиданные плохие результаты.
Если вы ничего не знаете об оценке и бенчмарках, вам следует начать с разделов
Basics
в каждой главе, прежде чем погружаться глубже. В разделе базовые знания вы также найдете пояснения, которые помогут вам разобраться в важных темах LLM: например, как работает инференс модели и что такое токенизация. Более прикладными разделы: советы и рекомендации, устранение неполадок и разделы, посвященные дизайну.
@ai_machinelearning_big_data
#AI #ML #LLM #Huggingface #Guide
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥12❤8🙉1
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|>
⚠️ В качестве доменного имени в команде запуска можно использовать доменные имена как
hf.co
, так и huggingface.co
.@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👏5✍1😁1
В использовании LLM всегда хочется увеличения скорости генерации без ущерба для качества. Есть метод ассистированной генерации, который зарекомендовал себя как один из компромиссных решений. Однако традиционные техники его применения требуют, чтобы целевая и вспомогательная LLM использовали один и тот же токенизатор, что ограничивает выбор моделей и возможность ощутимого ускорения.
Intel Labs и Hugging Face разработали метод универсальной ассистированной генерации (UAG) , который позволяет использовать любую модель в качестве ассистента, независимо от ее токенизатора. Метод открывает новые возможности для ускорения практически любой LLM, даже тех, для которых не существует специализированных маленьких версий для инференса ассистированной генерации.
UAG основан на принципе двустороннего преобразования токенизаторов. После того как модель-ассистент генерирует последовательность токенов, эти токены конвертируются в текст, который затем токенизируется с помощью токенизатора целевой модели. После проверки целевой моделью, токены целевой модели преобразуются обратно в формат токенов модели-ассистента. Для повышения точности перекодирования используется контекстное окно, состоящее из группы предшествующих токенов.
Чтобы оценить UAG, были проведены тесты с различными комбинациями целевых LLMи моделей-ассистентов. Результаты показали, что UAG дает ускорение декодирования 1.5-2.0x по сравнению с генерацией без ассистента. Например, скорость генерации кода с помощью CodeLlama-13b увеличилась в 1.9 раза при использовании tiny_starcoder_py в качестве модели-ассистента.
В будущем планируется расширить функциональность 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🔥11❤5🙏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
Статья на 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.
Дополнительно, в качестве альтернативы тонкой настройке, рассматривается использование промтинга с добавлением системного сообщения для контекстуализации ввода для модели, чтобы улучшить точность ее ответов.
@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
👍22❤5🔥5🥰1😁1🙈1
SmolTalk - это синтетический датасет, разработанный HuggingFace для обучения SmolTalk: новый синтетический набор данных для обучения больших языковых моделей LLM с учителем. Он состоит из 2 млн. строк и был использован для создания семейства моделей SmolLM2-Instruct. SmolTalk включает в себя как новые, так и существующие наборы данных.
Новые наборы данных:
Существующие общедоступные наборы данных:
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")
@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
👍23❤7🔥4
SmolVLM - серия компактных VLM с 2 млрд. параметров, отличающихся высокой эффективностью использования памяти и могут быть развернуты на локальных устройствах с ограниченными ресурсами.
Архитектура SmolVLM основана на Idefics3, с несколькими отличиями:
Модель кодирует каждый патч изображения 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
@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
👍20❤10🔥7
TGI v3 — новая версия архитектуры для обработки естественного языка, разработанная Hugging Face. TGI v3 демонстрирует значительный прирост производительности, особенно при работе с длинными запросами.
Улучшения v3:
Flashinfer
и flashdecoding
— новые ядра быстрой обработки текста. Оптимизированная структура кэширования позволяет быстро находить совпадения даже для очень длинных запросов.TGI v3 оценивалась в реалистичных сценариях на коротких и длинные запросах. Результаты тестов показали, что TGI v3 обрабатывает в 3 раза больше токенов, чем vLLM, а скорость обработки увеличилась в 13 раз для запросов длиной 200K+ токенов.
Хотя результаты работы TGI v3 впечатляют, следует учитывать некоторые ограничения:
⚠️ Если в среде не хватает места в kv-кэше, это может привести к конфликту. Чтобы избежать этого эффекта, следует установить ограничение
--max-total-tokens.
⚠️ В сценариях, где несколько реплик находятся за одним эндпоинтом рекомендуется использовать балансировку нагрузки на зависимые сеансы, чтобы заставить каждого пользователя отправлять свои запросы на одну и ту же реплику.
@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🔥7❤3
Познавательная статья Кристофера Флитвуда, ML-инженера HuggingFace об эволюции методов позиционного кодирования в моделях-трансформерах, начиная с простых подходов и заканчивая Rotary Positional Encoding (RoPE), используемым в современных моделях, таких как Llama 3.2.
Самовнимание, ключевой механизм трансформеров, требует обогащения позиционной информацией, поскольку оно является перестановочно инвариантным, то есть не учитывает порядок токенов в последовательности.
Без позиционной информации модели не могут различать одинаковые токены, находящиеся в разных позициях, что делает невозможным определение отношений между словами в предложении.
В статье описываются желательные свойства идеальной схемы позиционного кодирования: уникальность кодирования для каждой позиции, линейная зависимость между закодированными позициями, обобщение на более длинные последовательности, детерминированный процесс генерации и возможность расширения на множественные измерения.
Начальные методы, например, добавление целочисленного значения позиции к эмбеддингу токена, были признаны несостоятельными из-за проблем с диапазоном значений и низкой разделительной способностью. Альтернативой стало бинарное позиционное кодирование, которое, однако, не обеспечивало достаточной гладкости и непрерывности для оптимизации.
Синусоидальное позиционное кодирование, описанное в «Attention is all you need», стало важным шагом вперед.
Оно использует синусоидальные и косинусоидальные функции с разными частотами для кодирования позиции, позволяя модели изучать отношения между позициями.
RoPE кодирует относительные позиции, применяя матрицу вращения к парам компонентов векторов запросов (q) и ключей (k), что позволяет модели эффективно кодировать позиционную информацию без изменения нормы векторов. Это достигается путем умножения пар элементов векторов на матрицу вращения.
RoPE также может быть расширен для работы с многомерными данными, например, изображениями, путем независимого кодирования позиций в разных измерениях.
@ai_machinelearning_big_data
#AI #ML #LLM #RoPE #Huggingface #Blogpost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤6🔥3🤔2