Строка 46: |
Строка 46: |
| При необходимости файл дополняется байтами `0x00` до следующего значения, кратного general.alignment. Поля, включая массивы, записываются последовательно без [[Выравнивание структур данных|выравнивания]], если не указано иное. По умолчанию модели имеют [[little-endian]] порядок байтов. Они также могут иметь [[big-endian]] порядок байтов для использования на компьютерах с таким порядком байтов; в этом случае все значения (включая значения метаданных и тензоры) также будут иметь big-endian порядок байтов На момент написания статьи не существует способа определить, имеет ли модель порядок байтов от младшего к старшему; это может быть исправлено в будущих версиях. Если дополнительная информация не предоставлена, предполагается, что модель имеет порядок байтов [[little-endian]]. | | При необходимости файл дополняется байтами `0x00` до следующего значения, кратного general.alignment. Поля, включая массивы, записываются последовательно без [[Выравнивание структур данных|выравнивания]], если не указано иное. По умолчанию модели имеют [[little-endian]] порядок байтов. Они также могут иметь [[big-endian]] порядок байтов для использования на компьютерах с таким порядком байтов; в этом случае все значения (включая значения метаданных и тензоры) также будут иметь big-endian порядок байтов На момент написания статьи не существует способа определить, имеет ли модель порядок байтов от младшего к старшему; это может быть исправлено в будущих версиях. Если дополнительная информация не предоставлена, предполагается, что модель имеет порядок байтов [[little-endian]]. |
| | | |
− | После 4 байт сигнатуры файла - строки '''GGUF''', далее идут 4 байта версии файла, затем 8 байт ([[uint64]]) определяющие размер области [[key-value]] пар, содержащих [[метаданные]], затем 8 байт ([[uint64]]) определяющие размер области, в которой хранятся [[Тензор (машинное обучение)|тензоры]]. | + | После 4 байт сигнатуры файла - строки '''GGUF''', далее идут 4 байта версии файла, затем 8 байт ([[uint64]]) определяющие размер области [[key-value]] пар, содержащих [[метаданные]], затем 8 байт ([[uint64]]) определяющие размер области, в которой хранятся [[Тензор (машинное обучение)|тензоры]]. |
| | | |
| Следом за ними идут области хранения метаданных и тензоров как таковые, остаток файла после области, занятой тензорами может быть использован для хранения дополнительной информации. | | Следом за ними идут области хранения метаданных и тензоров как таковые, остаток файла после области, занятой тензорами может быть использован для хранения дополнительной информации. |
| | | |
− | [[Файл:GGUF.png|thumb|right|Структура файла GGUF версии 3. ]] | + | ==== Метаданные ==== |
| + | Следующие пары «ключ-значение» стандартизированы. Этот список может расширяться в будущем по мере обнаружения новых вариантов использования. По возможности, имена совпадают с исходными определениями модели, чтобы упростить сопоставление между ними. Не все из них обязательны, но все рекомендуются. |
| + | |
| + | В случае пропущенных пар читатель должен считать значение неизвестным и использовать либо значение по умолчанию, либо ошибку. |
| + | |
| + | Сообщество может разрабатывать собственные пары «ключ-значение» для хранения дополнительных данных. Однако они должны быть помещены в пространство имён с соответствующим именем сообщества, чтобы избежать коллизий. Например, сообщество `rustformers` может использовать `rustformers.` в качестве префикса для всех своих ключей. Если какой-либо ключ сообщества широко используется, он может быть повышен до стандартизированного ключа. |
| + | |
| + | По соглашению, большинство значений счётчика/длины и т. д. имеют тип `uint64`, если не указано иное. |
| + | |
| + | Это необходимо для поддержки более крупных моделей в будущем. Некоторые модели могут использовать `uint32` для своих значений; читателям рекомендуется поддерживать оба варианта. |
| + | |
| + | ==== Обязательные: ==== |
| + | general.architecture: string - архитектура модели. Описывает [[Архитектура модели машинного обучения|архитектуру]], реализуемую этой моделью. Все символы [[ASCII]] в нижнем регистре, разрешены только символы [a-z0-9]+. Поддерживаемые значения (список будет расширен в будущих версиях): [[llama]], mpt, gptneox, gptj, [[gpt2]], bloom, falcon, mamba, rwkv,[[Файл:GGUF.png|thumb|right|Структура файла GGUF версии 3. ]] |
| | | |
| == Сравнение с другими форматами файлов машинного обучения == | | == Сравнение с другими форматами файлов машинного обучения == |
Строка 56: |
Строка 68: |
| == Ссылки == | | == Ссылки == |
| | | |
− | * [https://github.com/ggerganov/ggml/blob/master/docs/gguf.md Файл документации формата GGUF на Github] | + | * [https://github.com/ggerganov/ggml/blob/master/docs/gguf.md Файл документации формата GGUF на Github] с подробным описанием структур данных. |
| | | |
| == Примечания == | | == Примечания == |
| [[Категория:Форматы файлов машинного обучения]] | | [[Категория:Форматы файлов машинного обучения]] |