کتابخانه‌ی استاندارد · یادگیری ماشین

جی‌جی‌یو‌اف gguf

خواندن پرونده‌های مدل GGUF، قالب llama.cpp.

واردسازی جی‌جی‌یو‌اف

GGUF قالب پرونده‌ی llama.cpp برای مدل‌های زبانی بزرگ است. یک پرونده فراداده، مثل معماری و واژگان توکنایزر، و وزن‌ها را، اغلب کوانتیزه، نگه می‌دارد. بارگذاری جی‌جی‌یو‌اف فقط سرآیند را می‌خواند و بارگذاری تانسور اعشاری هر وزن را هر وقت لازم شد به تانسور تبدیل می‌کند.

نمونه‌ی زیر یک پرونده‌ی کوچک می‌سازد تا بی دانلود مدل اجرا شود.

گونه‌ها

مقدار فراداده MetaValue

ساختار مقدار فراداده
یک مقدار فراداده.
نامانگلیسیگونهتوضیح
kindkindصحیح = 0گونه.
elem_kindelem_kindصحیح = 0گونه‌ی عنصرها، برای آرایه.
iiصحیح۶۴ = 0مقدار صحیح.
ffاعشار۶۴ = 0مقدار اعشاری.
ssرشته = ""رشته.
intsintsوکتور<صحیح۶۴>آرایه‌ی صحیح.
floatsfloatsوکتور<اعشار۶۴>آرایه‌ی اعشاری.
strsstrsوکتور<رشته>آرایه‌ی رشته، مثل واژگان توکنایزر.
gguf-Read.salam
واردسازی جی‌جی‌یو‌اف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
واردسازی بایگانی
واردسازی سیستم عامل

روال رشته(ب &: فشرده سازی.بافر بایت، متن: رشته):
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، متن.طول() برگردان صحیح۶۴)
    فشرده سازی.افزودن بایت‌ها(ب، متن برگردان تهی*، متن.طول())
پایان

روال ساختن(ب &: فشرده سازی.بافر بایت):
    فشرده سازی.افزودن بایت‌ها(ب، "GGUF" برگردان تهی*، ۴)
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، ۳)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۱)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۳)
    رشته(ب، "general.architecture")
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، جی‌جی‌یو‌اف.فراداده رشته)
    رشته(ب، "llama")
    رشته(ب، "llama.context_length")
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، ۴)
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، ۲۰۴۸)
    رشته(ب، "tokenizer.tokens")
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، جی‌جی‌یو‌اف.فراداده آرایه)
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، جی‌جی‌یو‌اف.فراداده رشته)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۲)
    رشته(ب، "<s>")
    رشته(ب، "سلام")
    رشته(ب، "w")
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، ۲)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۳)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۲)
    دودویی.نوشتن طبیعی۳۲ کوچک‌انتها(ب، جی‌جی‌یو‌اف.نوع اعشاری سی‌ودو)
    دودویی.نوشتن طبیعی۶۴ کوچک‌انتها(ب، ۰)
    تا فشرده سازی.طول بافر(ب) % ۳۲ != ۰:
        دودویی.نوشتن طبیعی۸(ب، ۰)
    پایان
    تکرار ۶ در ک:
        دودویی.نوشتن اعشار۳۲(ب، (ک برگردان اعشار۶۴) * ۰.۵، نادرست)
    پایان
پایان

روال ریشه:
    ناپایا بافر := فشرده سازی.بافر بایت جدید()
    ساختن(بافر)
    مسیر := سیستم عامل.پوشه موقت() + "/salam_tiny.gguf"
    _ := بایگانی.نوشتن پرونده دودویی از بافر(مسیر، بافر)
    ناپایا سالم := نادرست
    ناپایا حافظه‌ای := جی‌جی‌یو‌اف.تجزیه جی‌جی‌یو‌اف(بافر، سالم)
    سرچاپ سالم، حافظه‌ای.error == ""
    حافظه‌ای.آزادسازی()

    ناپایا گ := جی‌جی‌یو‌اف.بارگذاری جی‌جی‌یو‌اف(مسیر، سالم)
    سرچاپ سالم، گ.ok، گ.version، گ.keys.طول()، گ.tensors.طول()، گ.alignment، گ.data_offset
    سرچاپ گ.فراداده رشته("general.architecture")، گ.فراداده صحیح("llama.context_length"، ۰)، گ.فراداده صحیح("llama.block_count"، ۳۲)
    توکن‌ها := گ.values.دریافت(گ.نمایه فراداده("tokenizer.tokens"))
    سرچاپ توکن‌ها.kind == جی‌جی‌یو‌اف.فراداده آرایه، توکن‌ها.elem_kind == جی‌جی‌یو‌اف.فراداده رشته، توکن‌ها.strs.دریافت(۱)
    ش := گ.نمایه تانسور("w")
    اطلاعات := گ.tensors.دریافت(ش)
    سرچاپ اطلاعات.name، اطلاعات.dims.طول()، اطلاعات.شمار()، اطلاعات.ggml_type، اطلاعات.offset، جی‌جی‌یو‌اف.بایت‌های تانسور(گ، ش)
    ناپایا ت := جی‌جی‌یو‌اف.بارگذاری تانسور اعشاری(گ، ش، سالم)
    سرچاپ سالم، ت.عنصر(۰)، ت.عنصر(۵)
    ت.آزادسازی()
    سرچاپ جی‌جی‌یو‌اف.نوع اعشاری شانزده، جی‌جی‌یو‌اف.نوع کوانتیزه چهار صفر، جی‌جی‌یو‌اف.نوع کوانتیزه چهار یک، جی‌جی‌یو‌اف.نوع کوانتیزه هشت صفر
    گ.آزادسازی()
پایان
خروجیtrue true true true 3 3 1 32 224 llama 2048 32 true true سلام w 2 6 0 0 24 true 0 2.5 1 2 3 8

آزادسازی free

روال آزادسازی()
مقدار را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

اطلاعات تانسور TensorInfo

ساختار اطلاعات تانسور
اطلاعات یک تانسور در پرونده.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام، مثل blk.0.attn_q.weight.
dimsdimsوکتور<صحیح>ابعاد.
ggml_typeggml_typeصحیح = 0گونه‌ی وزن، یکی از ثابت‌های بالا.
offsetoffsetصحیح۶۴ = 0جای داده نسبت به آغاز بخش داده.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

شمار count

روال شمار(): صحیح
شمار عنصرها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

آزادسازی free

روال آزادسازی()
آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

جی‌جی‌یو‌اف Gguf

ساختار جی‌جی‌یو‌اف
پرونده‌ی GGUF خوانده‌شده.
نامانگلیسیگونهتوضیح
versionversionصحیح = 0نسخه‌ی قالب.
keyskeysوکتور<رشته>کلیدهای فراداده.
valuesvaluesوکتور<مقدار فراداده>مقدارها، هم‌ترتیب کلیدها.
tensorstensorsوکتور<اطلاعات تانسور>تانسورها.
alignmentalignmentصحیح = 32هم‌ترازی داده.
data_offsetdata_offsetصحیح = 0آغاز بخش داده در پرونده.
rawrawcompress.ByteBufبایت‌های پرونده.
errorerrorرشته = ""پیام خطا.
okokمنطقی = نادرستدرست خوانده شد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نمایه فراداده meta_index

روال نمایه فراداده(key: رشته): صحیح
شماره‌ی کلید فراداده؛ اگر نباشد، ۱-.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

فراداده صحیح meta_int

روال فراداده صحیح(key: رشته، dflt: صحیح۶۴): صحیح۶۴
فراداده‌ی صحیح، یا مقدار پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

فراداده رشته meta_str

روال فراداده رشته(key: رشته): رشته
فراداده‌ی رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نمایه تانسور tensor_index

روال نمایه تانسور(name: رشته): صحیح
شماره‌ی تانسور با نام.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

آزادسازی free

روال آزادسازی()
همه را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

پایاها و متغیرها

نوع اعشاری سی‌ودو GGML_F32

پایا نوع اعشاری سی‌ودو: صحیح۳۲ = 0
گونه‌ی وزن: اعشاری ۳۲ بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نوع اعشاری شانزده GGML_F16

پایا نوع اعشاری شانزده: صحیح۳۲ = 1
گونه‌ی وزن: اعشاری ۱۶ بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نوع کوانتیزه چهار صفر GGML_Q4_0

پایا نوع کوانتیزه چهار صفر: صحیح۳۲ = 2
گونه‌ی وزن: کوانتیزه‌ی ۴ بیتی با مقیاس.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نوع کوانتیزه چهار یک GGML_Q4_1

پایا نوع کوانتیزه چهار یک: صحیح۳۲ = 3
گونه‌ی وزن: کوانتیزه‌ی ۴ بیتی با مقیاس و کمینه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

نوع کوانتیزه هشت صفر GGML_Q8_0

پایا نوع کوانتیزه هشت صفر: صحیح۳۲ = 8
گونه‌ی وزن: کوانتیزه‌ی ۸ بیتی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

فراداده رشته META_STRING

پایا فراداده رشته: صحیح۳۲ = 8
گونه‌ی فراداده: رشته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

فراداده آرایه META_ARRAY

پایا فراداده آرایه: صحیح۳۲ = 9
گونه‌ی فراداده: آرایه.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

روال‌ها

تجزیه جی‌جی‌یو‌اف ParseGguf

روال تجزیه جی‌جی‌یو‌اف(buf: compress.ByteBuf، ok &: منطقی): جی‌جی‌یو‌اف
پرونده را از بافر می‌خواند؛ بافر از آن پس متعلق به نتیجه است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

بارگذاری جی‌جی‌یو‌اف LoadGguf

روال بارگذاری جی‌جی‌یو‌اف(path: رشته، ok &: منطقی): جی‌جی‌یو‌اف
پرونده‌ی .gguf را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

بایت‌های تانسور TensorBytes

روال بایت‌های تانسور(g &: جی‌جی‌یو‌اف، index: صحیح): صحیح
اندازه‌ی داده‌ی تانسور بر حسب بایت.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam

بارگذاری تانسور اعشاری LoadTensorF32

روال بارگذاری تانسور اعشاری(g &: جی‌جی‌یو‌اف، index: صحیح، ok &: منطقی): tensor.Tensor
تانسور را به اعشاری تبدیل و بارگذاری می‌کند؛ گونه‌های F16 و کوانتیزه بازگشایی می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam