Гибридный вывод ЦП, необычная схема квантования большой модели: квантование «2356 бит».
Гибридный вывод ЦП, необычная схема квантования большой модели: квантование «2356 бит».

В этой статье рассказывается о конкретных операциях количественной оценки, которые редко обсуждаются в Интернете. Количественная оценка очень распространенных целых цифр происходит благодаря разрешению различных моделей с открытым исходным кодом. CPU Окружающая среда, ЦП & GPU Техническое решение для гибридной среды: llama.cpp. 。

напиши впереди

Далее планируется поделиться практическим материалом о различных моделях с открытым исходным кодом. Чтобы позволить большему количеству студентов играть, необходимо снизить аппаратный порог входа. Технология количественного анализа моделей является таким «волшебным и эффективным» решением.

Студенты, прочитавшие первые две статьи «Заметки о модели 01W: базовое использование официальной модели Yi-34B» и «Локальное использование большой модели 01W 34B «Кай-Фу Ли», знают, что модели похожи на 34B, если вы хотите. Чтобы запустить его напрямую, без особых подсчетов, вам понадобится от 76 до 85 ГБ видеопамяти. Если мы выполним 8-битное квантование с относительно небольшими потерями эффекта, нам понадобится около 46 ГБ. Если мы будем использовать 4-битную модель квантования, нам также понадобится около 21 ГБ видеопамяти.

Хотя Модель может убежать,Но да возможно, что эффект Модели «побивает перелом»

даиз,Модельиз Количественная Качество изображения на самом деле так и есть: это процесс преобразования фотографий (RAW), похожих на те, что сняты нашими камерами, в «PNG», затем в «JPG» и даже в «GIF». Мы стремимся сэкономить как можно больше денег и поддерживать наилучшие результаты на нашем оборудовании. работает. Постарайтесь подобраться как можно ближе. “PNG” из «JPG», вместо того, чтобы с ним возиться “GIF” 。

Многие учащиеся, особенно в обычных обстоятельствах, используют восемь бит (INT8) или Четыре Кусочек(INT4)Кусочек Количественная оценка,нодамы оченьлегко встретитьДва неловкихиз Состояние:

  • Есть из Модель Количественная расклад на четверку (INT4) эффект становится не очень хороший, но да Количественный оценка Ченгба Кусочек(INT8)Эффект в порядке。Можетдавосемь Кусочек(INT8)Размер слишком большой,Не очень удобно бегать,Я надеюсь, что размер модели может быть меньше.
  • Есть из Модель Количественная оценка成Четыре Кусочек(INT4),Модель все еще слишком большая,Аппаратное обеспечение не работает. Для запуска требуется слишком много усилий.,Надеюсь Модель станет меньше.

В нескольких статьях, опубликованных ранее в этом году и опубликованных для внешнего мира, я много раз упоминал несколько различных типов информации. программа повышения квалификации, включающая Transformers、GGML ждать,Заинтересованные студенты могут прочитать его самостоятельно.,Я не буду вдаваться в подробности.

В этой статье мы в основном говорим о количестве необычных целых цифр из Модель Количественная. схема оценки. Сделай сам из Количественной Программа настройки, оригинальная игровая видеокарта не может работать локально. YI 34B Модель работает.

Подготовить материалы

о Модель Количественная Оценке необходимо подготовить два материала, один - да Модель, другой - да Количественная. Оценка использования компьютерного оборудования.

Файл программы модели

Произвольное количество параметров из Модель,Может 7B, 13B, 14B, 20B, 33B, 34B, 68B, 70B...из Модель,Также возможен меньший размер параметра из модели.

Я использую открытый исходный код isdazero-one-things здесь. YI-34B из сообщества finetune Доработанная версия обучения, обычно у сообщества может быть популярная Модельиз Количественная. Открытая версия, я часто вижу, как некоторые студенты говорят: «Подожди, Количественная» оценка Версия”。

Но на самом деле сделай это сам,Достаточно еды и одежды. Более того,Несмотря на тодаиз сообществаскачать Количественная Версия оценки, Модель также очень велика, вам нужно ходить туда и обратно, чтобы проверить, подходит ли Модельда, повторная загрузка также требует очень много времени, а стоимость широкополосного доступа намного уступает вашей собственной Количественной версии. Оценка происходит очень удобно.

Существует множество способов загрузки модельных программ. Если вы хотите начать с HuggingFace Сравнительно быстро скачать Модель можно, обратившись к этой статье из «Загрузка модельной программы» чтобы решить проблему.

Оцените используемое оборудование

и Количественная Оценка Модель использует аппаратное обеспечение и требует CPU Если у вас есть машина с относительно высокой вычислительной мощностью, GPU, то он будет значительно улучшен Модель Количественная Оценка скорости, если нет, то не беда.

Что касается Количественная Оценка После продуктов, а также различных устройств, вы можете Windows Дайте после количественного определения Linux или macOS Использование оборудования. Вы также можете использовать там CPU и GPU оборудование,Дайте после количественного определениятолько CPU использование оборудования.

Единственное, есть некоторые отличия,Запускайте только эту универсальную программу формата модели из лаунчера.,да Это должно быть каким-то образом связано с вашей текущей операционной средой и операционной системой.,Например, если вам нужно построить,Или Во время установки требуется некоторая инициализация.

По сравнению с Моделью эта программа действительно тривиальна.

Количественная подготовка модели в формате GGUF (GGML Universal File).

GGUF да GGML Новый тип замены называется GGML Общий формат файла.

GGUF Поддерживать Модель Количественная рейтингесть много форматов,Исключая «несколько сценариев преобразования экосистем с открытым исходным кодом»,В основном опирается на две программы:convert.py и quantize программа. Первый основан на Python Скрипт из формы существует в llama.cpp Project из каталога, последний требует от нас сборки проекта из.

скачайте llama.cpp из кода, после чего сможете выполнить операцию сборки:

Язык кода:shell
копировать
# скачатькод
git clone https://github.com/ggerganov/llama.cpp.git
# Измените рабочий каталог на папку проекта.
cd llama.cpp
# Сборку проекта можно изучить в файле (с видеокартой)
make -j LLAMA_CUBLAS=1
# Создать файл проекта (без видеокарты)
make -j

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

Предварительное преобразование: скрипт преобразования Convert.py

Этот скрипт может конвертировать не- GGML Формат файлов, конвертированных в ГГМЛ, с GGUF суффикс для сохранения。По умолчанию программа поддерживает конвертацию следующих форматов:из Модель:*.pth*.pt*.bin*.safetensors

да Мы осуществим основные этапы последующей нестандартной пластической операции. Модель Количественная оценкаиз.

Если мы будем продолжать использовать 8 Кусочек Количественная оценкаиз, можно использовать CPU и GPU Смешанные рассуждения из Модель, тогда мы можем сослаться на эту статью: «Попробуйте несколько разных Модельиз Количественная из параметров командной строки в операции расчета» из метода преобразовать Модель в GGML из q8_0 Модель.

Но если,Мы надеемся сделать больше другихиздругойиз Тип из Модель,например 2 Битовое квантование~ 6 битовое квантование, то я настоятельно рекомендую вам использовать convert.py Написание сценариев и конвертация f16 Тип из GGML Модель.

Хотя программа из параметров командной строки кажется громоздкой,Но нам нужно использовать команду преобразования, на самом деле она очень проста.,Вызов программы с использованием Python,Просто добавьте в команду «Путь к модели» и «Выходной тип модели»:

Язык кода:shell
копировать
python ./convert.py 【Путь моделиз】 --outtype f16

я здесь с YI-34B из сообщества finetune Модель brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties Например, настройте путь хранения на мою собственную из Модель:

Язык кода:shell
копировать
python ./convert.py ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ --outtype f16

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

Язык кода:shell
копировать
Loading model file ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/model-00001-of-00008.safetensors
Loading model file ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/model-00001-of-00008.safetensors
Loading model file ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/model-00002-of-00008.safetensors
...

params = Params(n_vocab=64000, n_embd=7168, n_layer=60, n_ctx=200000, n_ff=20480, n_head=56, n_head_kv=8, f_norm_eps=1e-05, rope_scaling_type=None, f_rope_freq_base=5000000.0, f_rope_scale=None, n_orig_ctx=None, rope_finetuned=None, ftype=<GGMLFileType.MostlyF16: 1>, path_model=PosixPath('../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties'))
Loading vocab file '../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/tokenizer.model', type 'spm'
Permuting layer 0
Permuting layer 1
Permuting layer 2
...

model.embed_tokens.weight                        -> token_embd.weight                        | BF16   | [64000, 7168]
model.layers.0.input_layernorm.weight            -> blk.0.attn_norm.weight                   | BF16   | [7168]
...

Writing ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-f16.gguf, format 1
gguf: This GGUF file is for Little Endian only
gguf: Setting special token type bos to 1
gguf: Setting special token type eos to 2
gguf: Setting special token type unk to 0
gguf: Setting special token type pad to 0
[  1/543] Writing tensor token_embd.weight                      | size  64000 x   7168  | type F16  | T+   1
[  2/543] Writing tensor blk.0.attn_norm.weight                 | size   7168           | type F32  | T+   2
[  3/543] Writing tensor blk.0.ffn_down.weight                  | size   7168 x  20480  | type F16  | T+   2
...

Wrote ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-f16.gguf

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

Окончательное преобразование: программа количественного анализа квантования

Когда мы используем вышеуказанный метод,После преобразования Модели в файл Из Модель относительно высокой точности.,Мы можем перейти к следующему шагу: Количественная оценка.

осуществлять ./quantize --help,В дополнение к ссылке на формат команды изосуществлять,Нам также удалось увидеть Количественную Программа оценки поддерживает все типы:

Язык кода:shell
копировать
Allowed quantization types:
   2  or  Q4_0   :  3.56G, +0.2166 ppl @ LLaMA-v1-7B
   3  or  Q4_1   :  3.90G, +0.1585 ppl @ LLaMA-v1-7B
   8  or  Q5_0   :  4.33G, +0.0683 ppl @ LLaMA-v1-7B
   9  or  Q5_1   :  4.70G, +0.0349 ppl @ LLaMA-v1-7B
  10  or  Q2_K   :  2.63G, +0.6717 ppl @ LLaMA-v1-7B
  12  or  Q3_K   : alias for Q3_K_M
  11  or  Q3_K_S :  2.75G, +0.5551 ppl @ LLaMA-v1-7B
  12  or  Q3_K_M :  3.07G, +0.2496 ppl @ LLaMA-v1-7B
  13  or  Q3_K_L :  3.35G, +0.1764 ppl @ LLaMA-v1-7B
  15  or  Q4_K   : alias for Q4_K_M
  14  or  Q4_K_S :  3.59G, +0.0992 ppl @ LLaMA-v1-7B
  15  or  Q4_K_M :  3.80G, +0.0532 ppl @ LLaMA-v1-7B
  17  or  Q5_K   : alias for Q5_K_M
  16  or  Q5_K_S :  4.33G, +0.0400 ppl @ LLaMA-v1-7B
  17  or  Q5_K_M :  4.45G, +0.0122 ppl @ LLaMA-v1-7B
  18  or  Q6_K   :  5.15G, -0.0008 ppl @ LLaMA-v1-7B
   7  or  Q8_0   :  6.70G, +0.0004 ppl @ LLaMA-v1-7B
   1  or  F16    : 13.00G              @ 7B
   0  or  F32    : 26.00G              @ 7B
          COPY   : only copy tensors, no quantizing

Здесь я рекомендую всегда использовать Q4_KQ5_K Такие ссылочные имена используются для преобразований моделей, а иногда и для изучения перед преобразованием. ./quantize --help Посмотрите, есть ли новые, более подходящие для вас. схема оценки. Имя в из номер вопроса Число да в из соответствует из Количественная оценкаиз цифр.

Вообще говоря,Чем больше количество цифр,Чем больше памяти и видеопамяти необходимо,работает медленнее,Но эффект и точность ближе к оригинальному варианту. Напротив,Хотя нам досталась ресурсосберегающая версия,Однако эффект да будет значительно снижен. но,Если ты не можешь бежать,Эффект даноль,В этом случае вы можете запустить Количественную оценку Модель.,В конце концов, да лучше, чем ничего,в некоторой степени,Это тоже крайняя мера.

Справочная информация показывает, как использовать командную строку и демонстрационную информацию.,Точно так же содержание да относительно сложное и сложное. Но да также из,На самом деле нам нужен только очень простой метод использования.,Достаточно запомнить следующий метод вызова:

Язык кода:shell
копировать
./quantize [Адрес модели] [Название типа модели]

Если мы заменим «переменную» в команде,В этой статье изменено использование «Из Модели». Я выбрал изумичную схему оценки.,Командная строка выглядит следующим образом:

Язык кода:shell
копировать
./quantize ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-f16.gguf Q5_K_M

Во время команды изучить мы увидим прокрутку логов:

Язык кода:shell
копировать
ggml_init_cublas: GGML_CUDA_FORCE_MMQ:   no
ggml_init_cublas: CUDA_USE_TENSOR_CORES: yes
ggml_init_cublas: found 1 CUDA devices:
  Device 0: NVIDIA GeForce RTX 4090, compute capability 8.9
main: build = 1622 (8a7b2fa)
main: built with cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 for x86_64-linux-gnu
main: quantizing '../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-f16.gguf' to '../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-Q5_K_M.gguf' as Q5_K_M
llama_model_loader: loaded meta data with 20 key-value pairs and 543 tensors from ../brucethemoose/CapyTessBorosYi-34B-200K-DARE-Ties/ggml-model-f16.gguf (version GGUF V3 (latest))
llama_model_loader: - tensor    0:                token_embd.weight f16      [  7168, 64000,     1,     1 ]
llama_model_loader: - tensor    1:           blk.0.attn_norm.weight f32      [  7168,     1,     1,     1 ]
...
llama_model_loader: - tensor  542:               output_norm.weight f32      [  7168,     1,     1,     1 ]
llama_model_loader: Dumping metadata keys/values. Note: KV overrides do not apply in this output.
llama_model_loader: - kv   0:                       general.architecture str              = llama
llama_model_loader: - kv   1:                               general.name str              = brucethemoose
llama_model_loader: - kv   2:                       llama.context_length u32              = 200000
llama_model_loader: - kv   3:                     llama.embedding_length u32              = 7168
...
[ 541/ 543]               blk.59.ffn_down.weight - [20480,  7168,     1,     1], type =    f16, quantizing to q6_K .. size =   280.00 MiB ->   114.84 MiB | hist: 
[ 542/ 543]               blk.59.ffn_norm.weight - [ 7168,     1,     1,     1], type =    f32, size =    0.027 MB
[ 543/ 543]                   output_norm.weight - [ 7168,     1,     1,     1], type =    f32, size =    0.027 MB
llama_model_quantize_internal: model size  = 65593.31 MB
llama_model_quantize_internal: quant size  = 23193.68 MB

main: quantize time = 99803.07 ms
main:    total time = 99803.07 ms

Преобразование завершено,Заходим в каталог Модельиз,Посмотреть размер файла,Вы можете увидеть очень очевидное уменьшение размера:

Язык кода:shell
копировать
# du -hs *
23G	ggml-model-Q5_K_M.gguf
65G	ggml-model-f16.gguf

Что касается использования Модельиз, то это слишком просто.

мы можем использовать llama.cpp Проект в стадии реализации main и server Чтобы запустить Модель, первая запустит интерактивный терминал в командной строке, а вторая — простой терминал. Web UI, мы можем легко настроить параметры вызова Моделиза в браузере.

Упоминалось в двух предыдущих статьях по теме.,Здесь мы снова говорим,Кстати, давайте поговорим о различных стратегиях выбора и настройки параметров.

Моя общая «исходная позиция» такова:

Язык кода:shell
копировать
./server --ctx-size 2048 --host 0.0.0.0 --n-gpu-layers 50 --model ../playground/01-ai/Yi-34B/ggml-model-q8_0.gguf

Вышеуказанные команды включают в себя:

  • --ctx-size” Укажите размер окна сеанса модели для размещения Token Количество, если хотите сэкономить видеопамять и память, Просто ставь меньше,Если это может удовлетворить потребности вашей миссии。Если есть больше ресурсов,Может быть открыт до верхнего предела Модельиз.,напримернедавноизпо умолчанию Модель Вседа 4k из,Просто установите 4096,8K Просто установите 8192,200K Просто установитеиндивидуальный 200 000 и так далее.
  • --host” На самом деле вы не можете добавить его по умолчанию, но если вы находитесь в локальной сети и ваш сервис работает в контейнере, то вам нужно расшарить его и получить к нему доступ вне контейнера, установите --host 0.0.0.0 Это очень необходимо.
  • --n-gpu-layers” Этот параметр необходимо использовать вместе с видеокартой.,Если у вас есть видеокарта,Но видеокарта не может установить Модель,или После загрузки модели он почти заполнен.,Вы можете рассмотреть возможность соответствующей корректировки значений.,В соответствии с вашими потребностями,Добавьте необходимое количество слоев в видеокарту.,Оставьте немного места для видеокарты. Чем больше слоев вы добавляете в видеокарту, тем больше,Тем быстрее рассуждения.
  • --model” В этом параметре нет ничего особенного. Уточняется, что мы умеем его хорошо конвертировать. GGML Файл модели в порядке.

ХОРОШО,Когда эта команда изучить,Мы можем с удовольствием играть вместе.

Играйте в ролевые игры с Количественной картой Yi-34B.
Играйте в ролевые игры с Количественной картой Yi-34B.

да не да, это очень интересно. У нас будет возможность поговорить о том, как реализовать описанный выше интерактивный опыт да.

наконец

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

Надеюсь, все поиграют в Модель,Развлечься может каждый. Спасибо всей трудолюбивой команде создателей Модели за Модель с открытым исходным кодом.,и Приветствую сообщество открытого исходного кода.,Делитесь хорошими вещами с большим количеством людей и друзей.

--EOF


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

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

Что касается стандартов поиска друзей, пожалуйста, обратитесь к следующей статье:

Новым друзьям: голосуйте за жизнь и продолжайте искать лучших друзей.

конечно,При добавлении друзей через следующую статью,Пожалуйста, укажите ваше настоящее имя, компанию или школу, источник и название.,Цените время друг друга :D


В этой статье используется лицензионное соглашение «Attribution 4.0 International (CC BY 4.0)». Вы можете перепечатывать, повторно изменять и использовать его, но источник должен быть указан. Атрибуция 4.0 Международная (CC BY 4.0)

Автор статьи: Су Ян

Время создания: 12 декабря 2023 г.

Статистическое количество слов: 8528 слов.

Время чтения: 18 минут на чтение.

Ссылка на эту статью: https://soulteary.com/2023/12/12/cpu-hybrid-inference-unusual-large-language-model-quantization-2-3-5-6-bit-quantization.html

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.