جیجییواف gguf
خواندن پروندههای مدل GGUF، قالب llama.cpp.
واردسازی جیجییواف
GGUF قالب پروندهی llama.cpp برای مدلهای زبانی بزرگ است. یک پرونده فراداده، مثل معماری و واژگان توکنایزر، و وزنها را، اغلب کوانتیزه، نگه میدارد. بارگذاری جیجییواف فقط سرآیند را میخواند و بارگذاری تانسور اعشاری هر وزن را هر وقت لازم شد به تانسور تبدیل میکند.
نمونهی زیر یک پروندهی کوچک میسازد تا بی دانلود مدل اجرا شود.
گونهها
مقدار فراداده MetaValue
ساختار مقدار فراداده| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| kind | kind | صحیح = 0 | گونه. |
| elem_kind | elem_kind | صحیح = 0 | گونهی عنصرها، برای آرایه. |
| i | i | صحیح۶۴ = 0 | مقدار صحیح. |
| f | f | اعشار۶۴ = 0 | مقدار اعشاری. |
| s | s | رشته = "" | رشته. |
| ints | ints | وکتور<صحیح۶۴> | آرایهی صحیح. |
| floats | floats | وکتور<اعشار۶۴> | آرایهی اعشاری. |
| strs | strs | وکتور<رشته> | آرایهی رشته، مثل واژگان توکنایزر. |
واردسازی جیجییواف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
واردسازی بایگانی
واردسازی سیستم عامل
روال رشته(ب &: فشرده سازی.بافر بایت، متن: رشته):
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، متن.طول() برگردان صحیح۶۴)
فشرده سازی.افزودن بایتها(ب، متن برگردان تهی*، متن.طول())
پایان
روال ساختن(ب &: فشرده سازی.بافر بایت):
فشرده سازی.افزودن بایتها(ب، "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، جیجییواف.بایتهای تانسور(گ، ش)
ناپایا ت := جیجییواف.بارگذاری تانسور اعشاری(گ، ش، سالم)
سرچاپ سالم، ت.عنصر(۰)، ت.عنصر(۵)
ت.آزادسازی()
سرچاپ جیجییواف.نوع اعشاری شانزده، جیجییواف.نوع کوانتیزه چهار صفر، جیجییواف.نوع کوانتیزه چهار یک، جیجییواف.نوع کوانتیزه هشت صفر
گ.آزادسازی()
پایانآزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam
اطلاعات تانسور TensorInfo
ساختار اطلاعات تانسور| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| name | name | رشته = "" | نام، مثل blk.0.attn_q.weight. |
| dims | dims | وکتور<صحیح> | ابعاد. |
| ggml_type | ggml_type | صحیح = 0 | گونهی وزن، یکی از ثابتهای بالا. |
| offset | offset | صحیح۶۴ = 0 | جای داده نسبت به آغاز بخش داده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam
شمار count
روال شمار(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam
جیجییواف Gguf
ساختار جیجییواف| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| version | version | صحیح = 0 | نسخهی قالب. |
| keys | keys | وکتور<رشته> | کلیدهای فراداده. |
| values | values | وکتور<مقدار فراداده> | مقدارها، همترتیب کلیدها. |
| tensors | tensors | وکتور<اطلاعات تانسور> | تانسورها. |
| alignment | alignment | صحیح = 32 | همترازی داده. |
| data_offset | data_offset | صحیح = 0 | آغاز بخش داده در پرونده. |
| raw | raw | compress.ByteBuf | بایتهای پرونده. |
| error | error | رشته = "" | پیام خطا. |
| ok | ok | منطقی = نادرست | درست خوانده شد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: 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نمونهی این مورد همراه با موارد بالاتر آمده است: gguf-Read.salam