Гибридный вывод ЦП, необычная схема квантования большой модели: квантование «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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose