Изучаем ИИ простыми словами: квантование

Дата публикации: 26 декабря 2024
Изучаем ИИ простыми словами: квантование

Что такое квантование и зачем оно нужно? Представьте, что вы отправляетесь в магазин. Вместо того чтобы говорить, что молоко стоит 89 рублей 99 копеек, мы обычно говорим "90 рублей". Это и есть простейший пример квантования – мы упрощаем точное число до приблизительного, которым удобнее пользоваться. В мире ИИ происходит то же самое: вместо использования очень точных чисел, система использует приближенные значения, чтобы работать быстрее и занимать меньше места в памяти.

В данном материалы мы приоткроем занавес на сложные понятия, которые лежат в основе всех ИИ. Статья рассчитана больше на новичков. 

Содержание:

  1. Как работает квантование
  2. Биты
  3. Параметры
  4. Обучение и вывод информации
  5. Токены
  6. Точность вычислений
  7. Проблема ресурсов

 


 

Как квантование работает в моделях ИИ: простое объяснение

К примеру, у вас есть палитра с миллионом оттенков синего цвета. Это как модель ИИ с очень точными числами. Теперь представьте, что вы решили использовать только 10 основных оттенков синего. Каждый из миллиона оттенков вы заменяете на ближайший из этих 10. Это и есть квантование – мы заменяем точные значения приближенными, похожими значениями из меньшего набора.

Практический пример с весом

Допустим, у нас есть набор весов продуктов:

  • 100.527 грамм
  • 250.842 грамм
  • 375.123 грамм
  • 425.991 грамм

После квантования они могут стать:

  • 100 грамм
  • 250 грамм
  • 375 грамм
  • 425 грамм

Мы потеряли немного точности, но зато числа стали проще и занимают меньше места в памяти.

Как это работает в ИИ

1. До квантования

  • Модель хранит числа с высокой точностью
  • Например: 0.123456789, 0.987654321
  • Каждое число занимает много памяти (32 или 16 бит)
  • Вычисления с такими числами требуют больше времени и энергии

2. После квантования

  • Числа упрощаются до меньшей точности
  • Те же числа могут стать: 0.123, 0.988
  • Каждое число занимает меньше памяти (8 бит или меньше)
  • Вычисления становятся быстрее и эффективнее

Почему это важно: пример с библиотекой

Есть библиотека с миллионом книг, где каждая книга имеет точный вес с точностью до миллиграмма. Если мы округлим вес каждой книги до грамма:

  • Мы сможем хранить информацию в меньшей картотеке
  • Быстрее находить нужные данные
  • Проще делать расчеты
  • При этом для практических целей такой точности достаточно

Плюсы и минусы квантования

Преимущества:

  • Модель занимает меньше места на диске
  • Работает быстрее
  • Потребляет меньше энергии
  • Может работать на менее мощных устройствах

Недостатки:

  • Небольшая потеря точности
  • Возможны редкие ошибки в сложных случаях
  • Не все операции можно выполнять с той же точностью

Реальный пример из практики

Возьмем чат-бота, который должен определить эмоциональный тон сообщения:

До квантования он мог оценивать эмоции по шкале от 0 до 1 с точностью до 6 знаков после запятой:

  • Радость: 0.873421
  • Грусть: 0.043892
  • Злость: 0.082687

После квантования:

  • Радость: 0.87
  • Грусть: 0.04
  • Злость: 0.08

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

 


 

Биты и компьютерные вычисления

Биты – это как алфавит для компьютера, но состоящий всего из двух букв: 0 и 1. Допустим вы играете в игру "да/нет" – это два варианта ответа, как два состояния бита. Чем больше битов мы используем, тем больше разных чисел можем записать, как больше слов можно составить из большего количества букв.

Что такое бит?

Представим обычный выключатель света:

  • Положение "включено" = 1
  • Положение "выключено" = 0

Это и есть бит в самом простом понимании – он может иметь только два состояния. Как световой выключатель.

Как биты образуют числа?

Давайте посмотрим на простой пример с лампочками:

1 бит (одна лампочка):

  • Может показать только 2 состояния (0 или 1)
  • Как монетка: орел или решка

2 бита (две лампочки):

  • Уже 4 возможных комбинации: 00, 01, 10, 11
  • Как два выключателя в комнате

3 бита (три лампочки):

  • 8 комбинаций: 000, 001, 010, 011, 100, 101, 110, 111
  • Как три выключателя

Связь с числами в реальной жизни

4-битное число может хранить значения от 0 до 15:

0000 = 0 
0001 = 1 
0010 = 2 
... 
1111 = 15

Почему 15?

Каждая позиция имеет свой "вес"

В двоичной системе каждая позиция имеет вес, равный степени двойки:

Позиция
Вес позиции8421
Биты1111

 Веса удваиваются слева направо:

  • 2⁰ = 1 (первая позиция)
  • 2¹ = 2 (вторая позиция)
  • 2² = 4 (третья позиция)
  • 2³ = 8 (четвертая позиция)

Когда бит равен 1, мы берем вес этой позиции. Когда 0 - не берем. 

К примеру для бита - 0101 - значение равно 1 + 4 = 5

Потому что вес первой позиции (справа) равен - 1

Вес третьей позиции равен (справа) - 4

Как это связано с квантованием?

Пример с температурой:

8 бит:

  • Может хранить 256 разных значений
  • Достаточно для температуры с точностью до градуса (-128°C до +127°C)

4 бита:

  • Только 16 разных значений
  • Можно хранить температуру только с шагом в 10 градусов (-80°C до +70°C)

Пример с деньгами:

16 бит:

  • Может хранить 65,536 разных значений
  • Подходит для цен с копейками (например, 1234.56 рублей)

8 бит:

  • Только 256 значений
  • Придется округлять до рублей (1235 рублей)

Почему это важно для ИИ?

До квантования (32 бита):

  • Очень точные числа
  • Как весы в ювелирном магазине (до 0.001 грамма)
  • Занимает много памяти
  • Медленные вычисления

После квантования (8 бит):

  • Менее точные, но достаточные числа
  • Как весы в продуктовом (до 5 граммов)
  • Занимает в 4 раза меньше памяти
  • Быстрые вычисления

Практический пример

Возьмем для примера цифровое фото:

  • Исходное фото (24 бита на цвет):
    • 16 миллионов оттенков
    • Занимает много места
  • После квантования (8 бит на цвет):
    • 256 оттенков
    • Занимает в 3 раза меньше места
    • Для большинства фото разница незаметна

 


 

Параметры в ИИ-моделях: настройки умной системы

Параметры в ИИ – это как настройки в фотоаппарате. У фотоаппарата есть множество настроек: яркость, контрастность, фокус и т.д. Чем больше настроек вы можете регулировать, тем более точный снимок получите. Также и с ИИ: чем больше параметров, тем точнее он может работать, но тем больше ресурсов требует.

Представьте себе рецепт пиццы. В нём есть множество параметров:

  • Количество муки (в граммах)
  • Температура выпечки (в градусах)
  • Время приготовления (в минутах)
  • Количество соли (в граммах)
  • Толщина теста (в миллиметрах)

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

Пример с распознаванием кошек

Когда ИИ учится распознавать кошек на фотографиях, он настраивает множество параметров:

  • Вес для формы ушей
  • Вес для наличия усов
  • Вес для формы мордочки
  • Вес для текстуры шерсти и так далее...

До квантования:

  • Вес для ушей: 0.89542876543
  • Вес для усов: 0.34891234567
  • Вес для глаз: 0.67234567891

После квантования:

  • Вес для ушей: 0.90
  • Вес для усов: 0.35
  • Вес для глаз: 0.67

Что такое веса?

Новый термин в мире ИИ. Давай разберем на примере тех же кошек.

Скажем, вы учите друга отличать кошек от других животных. Вы бы сказали: "Смотри внимательно на:

  • Уши (они треугольные и стоячие)
  • Усы (длинные)
  • Морду (форма особенная)
  • Шерсть (мягкая, пушистая)"

Но некоторые признаки важнее других! Например:

  • Уши очень важны (вес 0.90) - потому что у кошек характерные треугольные уши
  • Усы менее важны (вес 0.35) - потому что усы есть и у других животных
  • Глаза средне важны (вес 0.67) - они особенные, но не уникальные
  • Шерсть также может присутствовать у других животных
  • Размер кошки важен (меньше чем тигр. Больше чем мышь). Но данный критерий не будет иметь высшего веса.
  • Голос может иметь решающее значение. Но в распознавании фото его не применяют.

Веса - это как "важность" каждого признака. Чем больше вес (ближе к 1.0), тем важнее этот признак для распознавания кошки.

 



Inference (вывод) vs обучение: почему использование ИИ дороже обучения?

Предлагаем разобраться с темой обучение на очень простом примере.

Обучение vs. использование (inference):

  1. Обучение:
    Допустим, вы учите ребенка решать задачи. Например, объясняете таблицу умножения. Это требует времени и усилий, но после обучения ребенок знает, как умножать числа.
    В мире ИИ это процесс "тренировки" модели. Модель обучается на большом наборе данных, чтобы понять правила и шаблоны.
  2. Использование (inference):
    Теперь ребенок идет в школу и каждый раз, когда его спрашивают "Сколько будет 7 × 8?", он должен дать ответ. Если его спрашивают 1000 раз в день, он выполняет эту задачу 1000 раз.
    В ИИ это значит, что каждая новая задача (например, перевод текста, распознавание голоса) требует расчетов. Если миллионы людей используют модель каждый день, это может быть дорого из-за большого числа операций.

Почему inference дороже?

Обучение происходит один раз. Это большая задача, но единичная. А использование происходит много раз для всех пользователей. Чем больше людей использует ИИ, тем больше ресурсов (время, электричество) уходит на работу.

 


 

Токены: кирпичики информации

Токены – это как слоги в словах. Когда мы читаем слово "молоко", мы разбиваем его на части: "мо-ло-ко". ИИ делает то же самое с информацией, разбивая её на маленькие части, которые легче обработать. Триллион токенов – это как триллион слогов текста.

Пример:

  • Слово "молоко" можно представить как слоги: "мо-ло-ко".
  • Для ИИ это будут токены: "мо", "ло", "ко".

ИИ не видит текст как мы. Он видит эти токены и работает с ними, чтобы понимать и создавать предложения.

Почему токены важны?

  • Когда ты читаешь длинную книгу, тебе нужно помнить слова, предложения и их смысл.
  • ИИ тоже обрабатывает текст, но ему удобнее разделить всё на токены, чтобы легче "переварить" информацию.

Если модель ИИ обрабатывает триллион токенов, это как читать триллион слогов или "кирпичиков" текста.

Как модель видит токен до и после квантования

До квантования (высокая точность):

Когда модель обрабатывает токен, например, слово "молоко", оно представлено не в буквенном виде, а как набор чисел. Это называется "вектор представления" (vector representation).

Пример:
Токен "молоко" может быть закодирован в виде:
[0.12345678, 0.98765432, 0.54321098, 0.67890123

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

После квантования (упрощение):

Квантование снижает точность чисел, чтобы уменьшить размер данных и ускорить расчёты.

Пример:
Тот же токен "молоко" после квантования может выглядеть так:
[0.12, 0.98, 0.54, 0.67]

Числа округлены, занимают меньше места и проще в обработке.

 


 

Точность вычислений: компромисс между качеством и скоростью

Точность вычислений в ИИ – это степень детализации, с которой модель обрабатывает числа. Более высокая точность требует больше ресурсов, но даёт более точные результаты.

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

Возьмем пример с весами в магазине:

  • 16-битная точность – как весы, показывающие вес до грамма
  • 8-битная точность – как весы, показывающие до 10 граммов
  • 4-битная точность – как весы, показывающие до 100 граммов

Чем меньше точность, тем быстрее идет взвешивание, но тем больше погрешность.

 


 

Большие ресурсы и в чем же проблема

Если предположить, что ИИ – это повар. Маленькая модель знает 100 рецептов, большая – 10000 рецептов. Большой модели нужно больше "памяти" для хранения рецептов и больше времени на поиск нужного рецепта, но она может приготовить больше разных блюд.

Когда мы пытаемся сделать большую модель "легче" через квантование, это похоже на пересказ длинной книги очень коротко. Чем сложнее и объемнее оригинальная книга, тем больше важных деталей может потеряться при сокращении.

Исследователи обнаружили, что:

  • Нельзя бесконечно упрощать большие модели без потери качества
  • Иногда лучше изначально создать маленькую, но эффективную модель
  • Будущее за "умным" отбором данных для обучения, а не за простым увеличением их объема

И напоследок

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

Автор: Максим Мирошник