جیجییواف ai.gguf
خواندن پروندههای مدل GGUF، قالب llama.cpp.
واردسازی هوش مصنوعی.جیجییواف
نام آرگومانها شناسهی خود کد است و معادل فارسی ندارد؛ گونهها، کلیدواژهها و نام بستهها با معادل فارسی نوشته میشوند.
GGUF قالب پروندهی llama.cpp برای مدلهای زبانی بزرگ است. یک پرونده هم فراداده را نگه میدارد (معماری، اندازهها، واژگان توکنایزر و قالب گفتگو) و هم همهی وزنها را که معمولا به ۸ یا ۴ بیت کوانتیزه شدهاند. این بسته چنین پروندهای را میخواند: بارگذاری جیجییواف سرآیند و فهرست تانسورها را تجزیه میکند، فراداده صحیح و فراداده رشته فراداده را میخوانند و بارگذاری تانسور اعشاری هر وقت لازم شد یک وزن را به تانسور اعشاری ۳۲ بیتی تبدیل میکند.
این بسته خوانندهی پرونده است، نه موتور استنتاج. برای تولید متن با یک مدل از llm استفاده کنید که روی همین بسته ساخته شده است. مدلهایی که از PyTorch به ONNX صادر شدهاند از راه onnx اجرا میشوند.
محدودیتهایی که پیش از دانلود مدل باید بدانید
بارگذاری جیجییوافاول کل پرونده را در حافظه میخواند و هر بافر حداکثر ۲ گیگابایت جا دارد. پروندههای کوچکتر از ۲ گیگابایت انتخاب کنید: TinyLlama 1.1B، Qwen 0.5B یا 1.5B و دیگر مدلهای کوچک.- فقط پنج گونهی وزن خوانده میشود:
F32،F16،Q8_0،Q4_0وQ4_1. کوانتیزههای K که بیشتر دانلودها از آنها استفاده میکنند، مثلQ4_K_MیاQ5_K_S، و BF16 پشتیبانی نمیشوند:بایتهای تانسوربرایشان -1 برمیگرداند وبارگذاری تانسور اعشاریخطایgguf.tensor_typeمیدهد. پروندهیQ8_0یاQ4_0مدل را دانلود کنید. - ابعاد به ترتیب llama.cpp ذخیره میشوند، سریعترین بعد اول.
بارگذاری تانسور اعشاریترتیب را وارونه میکند، پس وزنی که با ابعاد4096 x 32000فهرست شده، تانسوری با ۳۲۰۰۰ سطر ۴۰۹۶تایی میشود. تجزیه جیجییوافمالک بافری میشود که به آن میدهید وآزادسازیمدل آن را آزاد میکند. اگر خطا بدهد، بافر همچنان مال شماست.
نمونهها پروندههای کوچکی در حافظه میسازند تا بی دانلود اجرا شوند.
درون یک فایل مدل چیست
هر چه llama.cpp باید دربارهی یک مدل بداند در فراداده است، زیر کلیدهایی که با نام معماری شروع میشوند: llama.block_count شمار لایههاست و llama.context_length بلندترین ورودیای که مدل برایش آموزش دیده. اول general.architecture را بخوانید و کلیدهای دیگر را از روی آن بسازید تا همین ابزار برای فایلهای Qwen و Gemma و Phi هم کار کند. فراداده صحیح و فراداده رشته برای کلیدی که نیست مقدار پیشفرض یا رشتهی خالی برمیگردانند، پس کلیدی که فایلی ندارد هیچوقت برنامه را متوقف نمیکند.
یک مدل کوچک کوانتیزه دانلود کنید، مثلا فایل Q4_0 یا Q8_0 از TinyLlama یا Qwen در Hugging Face، و اجرا کنید:
salam build gguf-guide-inspect.salam
./gguf-guide-inspect tinyllama-1.1b-chat.Q8_0.gguf
واردسازی هوش مصنوعی.جیجییواف
واردسازی سیستم عامل
واردسازی رشته
تابع ریشه:
آرگ ها := سیستم عامل.آرگومان ها()
اگر آرگ ها.طول() < ۲:
سرچاپ "روش کاربرد: gguf-guide-inspect model.gguf"
برگشت ۱
پایان
ناپایا مدل := جیجییواف.جیجییواف {}
تلاش:
مدل = جیجییواف.بارگذاری جیجییواف(آرگ ها.بگیر(۱))
گرفتن خطا خ:
سرچاپ "مدل GGUF نیست:"، خ.به رشته()
برگشت ۱
پایان
معماری := مدل.فراداده رشته("general.architecture")
سرچاپ "نام"، مدل.فراداده رشته("general.name")
سرچاپ "معماری"، معماری
سرچاپ "لایهها"، مدل.فراداده صحیح(معماری + ".block_count"، ۰)
سرچاپ "بافت"، مدل.فراداده صحیح(معماری + ".context_length"، ۰)
سرچاپ "جاسازی"، مدل.فراداده صحیح(معماری + ".embedding_length"، ۰)
واژگان := مدل.نمایه فراداده("tokenizer.ggml.tokens")
اگر واژگان >= ۰:
سرچاپ "واژگان"، مدل.مقدارها.بگیر(واژگان).آرایه رشته.طول()
پایان
ناپایا وزن ها := ۰ برگردان صحیح۶۴
ناپایا بایت ها := ۰ برگردان صحیح۶۴
ناپایا نوع ها := نگاشت {} برگردان نگاشت<صحیح، صحیح>
تکرار مدل.تانسورها.طول() در ی:
اطلاعات := مدل.تانسورها.بگیر(ی)
وزن ها += اطلاعات.شمار() برگردان صحیح۶۴
بایت ها += جیجییواف.بایتهای تانسور(مدل، ی) برگردان صحیح۶۴
اگر نوع ها.دارد(اطلاعات.نوع وزن):
نوع ها.درج(اطلاعات.نوع وزن، نوع ها.بگیر(اطلاعات.نوع وزن) + ۱)
وگرنه:
نوع ها.درج(اطلاعات.نوع وزن، ۱)
پایان
پایان
سرچاپ مدل.تانسورها.طول()، "تانسور،"، وزن ها / ۱۰۰۰۰۰۰، "میلیون وزن،"، بایت ها / ۱۰۴۸۵۷۶، "مبیبایت"
سرچاپ "تانسورهای Q8_0:"، نوع ها.دارد(جیجییواف.نوع کوانتیزه هشت صفر)، "Q4_0:"، نوع ها.دارد(جیجییواف.نوع کوانتیزه چهار صفر)، "F16:"، نوع ها.دارد(جیجییواف.نوع اعشاری شانزده)
سرچاپ "قالب گفتگو دارد:"، رشته.شامل است(مدل.فراداده رشته("tokenizer.chat_template")، "{%")
مدل.آزادسازی()
پایاناینجا هیچ وزنی تبدیل نمیشود، ولی بارگذاری جیجییواف باز هم کل پرونده را در حافظه میخواند، پس فقط باز کردن یک مدل ۱ گیگابایتی ۱ گیگابایت حافظه میگیرد. واژگان آرایهای از رشتهها در tokenizer.ggml.tokens است و tokenizer.chat_template قالب Jinja را نگه میدارد که گفتگو را به قالب ورودی مدل تبدیل میکند.
هر وزن چقدر جا میگیرد
کوانتیزهسازی وزنها را با بیتهای کمتری نگه میدارد. Q8_0 بلوکهای ۳۲ وزنی را به شکل عدد صحیح ۸ بیتی و یک مقیاس ۱۶ بیتی نگه میدارد، یعنی ۳۴ بایت برای هر بلوک یا ۸.۵ بیت برای هر وزن؛ Q4_0 همان بلوک را در ۱۸ بایت جا میدهد، ۴.۵ بیت برای هر وزن. بایتهای تانسور اندازهی ذخیره شدهی هر تانسور را میدهد. برنامهی زیر پروندهای با یک تانسور ۶۴ وزنی از هر گونهی خواندنی مینویسد، جز Q4_1 که کنار مقیاس یک کمینه هم نگه میدارد و برای هر بلوک ۲۰ بایت میگیرد.
واردسازی هوش مصنوعی.جیجییواف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
واردسازی تبدیل
تابع نام(ب &: فشرده سازی.بافر بایت، متن: رشته):
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، متن.طول() برگردان صحیح۶۴)
فشرده سازی.افزودن بایتها(ب، متن برگردان تهی*، متن.طول())
پایان
تابع سرآیند تانسور(ب &: فشرده سازی.بافر بایت، برچسب: رشته، نوع: صحیح، جابجایی: صحیح):
نام(ب، برچسب)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۱)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۶۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، نوع)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، جابجایی برگردان صحیح۶۴)
پایان
تابع ریشه خطادار:
ناپایا ب := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بایتها(ب، "GGUF" برگردان تهی*، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۴)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۰)
سرآیند تانسور(ب، "full"، جیجییواف.نوع اعشاری سیودو، ۰)
سرآیند تانسور(ب، "half"، جیجییواف.نوع اعشاری شانزده، ۲۵۶)
سرآیند تانسور(ب، "q8"، جیجییواف.نوع کوانتیزه هشت صفر، ۳۸۴)
سرآیند تانسور(ب، "q4"، جیجییواف.نوع کوانتیزه چهار صفر، ۴۸۰)
تا فشرده سازی.طول بافر(ب) % ۳۲ != ۰:
دودویی.نوشتن طبیعی۸(ب، ۰)
پایان
تکرار ۵۴۴:
دودویی.نوشتن طبیعی۸(ب، ۰)
پایان
ناپایا مدل := تلاش جیجییواف.تجزیه جیجییواف(ب)
سرچاپ "خوانده شد:"، مدل.تانسورها.طول()، "تانسور"
تکرار مدل.تانسورها.طول() در ی:
اطلاعات := مدل.تانسورها.بگیر(ی)
بایت ها := جیجییواف.بایتهای تانسور(مدل، ی)
بیت ها := (بایت ها * ۸) برگردان اعشار۶۴ / (اطلاعات.شمار() برگردان اعشار۶۴)
سرچاپ اطلاعات.نام، اطلاعات.شمار()، "وزن در"، بایت ها، "بایت،"، تبدیل.قالب اعشار با دقت(بیت ها، ۱)، "بیت برای هر وزن"
پایان
مدل.آزادسازی()
پایانهمین عددها حافظهی لازم یک مدل را پیشبینی میکنند: مدلی با هفت میلیارد وزن در F32 حدود ۲۸ گیگابایت، در F16 حدود ۱۴، در Q8_0 حدود ۷.۴ و در Q4_0 حدود ۳.۹ گیگابایت جا میگیرد، جدا از حافظهای که بافت لازم دارد. بارگذاری تانسور اعشاری هر کدام از این نوعها را وقتی به مقدارها نیاز دارید دوباره به اعشاری ۳۲ بیتی باز میکند. این اندازهها مربوط به پروندهاند؛ این بسته کل پرونده را در حافظه لازم دارد و برای هر تانسوری که بار میکنید چهار بایت به ازای هر وزن هم روی آن.
خواندن یک وزن
نمایه تانسور تانسوری را با نامش پیدا میکند و بارگذاری تانسور اعشاری بازش میکند. برنامه یک جدول جاسازی نشانه با گونهی Q8_0 برای دو نشانه، هر کدام ۳۲ مقدار، مینویسد: هر بلوک یک مقیاس ۱۶ بیتی (اینجا حدود ۰٫۱) و پس از آن ۳۲ بایت علامتدار است و هر وزن برابر مقیاس ضرب در بایت خودش است. سطر ۱ جدول، جاسازی نشانهی ۱ است.
واردسازی هوش مصنوعی.جیجییواف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
واردسازی تبدیل
تابع نوشتن نام(ب &: فشرده سازی.بافر بایت، متن: رشته):
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، متن.طول() برگردان صحیح۶۴)
فشرده سازی.افزودن بایتها(ب، متن برگردان تهی*، متن.طول())
پایان
تابع ریشه خطادار:
ناپایا ب := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بایتها(ب، "GGUF" برگردان تهی*، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۱)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۰)
نوشتن نام(ب، "token_embd.weight")
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۲)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۳۲)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۲)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، جیجییواف.نوع کوانتیزه هشت صفر)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۰)
تا فشرده سازی.طول بافر(ب) % ۳۲ != ۰:
دودویی.نوشتن طبیعی۸(ب، ۰)
پایان
تکرار ۲ در سطر:
دودویی.نوشتن طبیعی۱۶ کوچکانتها(ب، 0x2E66)
تکرار ۳۲ در ستون:
عدد := (سطر * ۳۲ + ستون) * ۳ - ۶۰
دودویی.نوشتن طبیعی۸(ب، عدد & ۲۵۵)
پایان
پایان
ناپایا مدل := تلاش جیجییواف.تجزیه جیجییواف(ب)
نمایه := مدل.نمایه تانسور("token_embd.weight")
اطلاعات := مدل.تانسورها.بگیر(نمایه)
سرچاپ اطلاعات.نام، "ابعاد"، اطلاعات.ابعاد.بگیر(۰)، "x"، اطلاعات.ابعاد.بگیر(۱)، "در"، جیجییواف.بایتهای تانسور(مدل، نمایه)، "بایت"
ناپایا وزنها := تلاش جیجییواف.بارگذاری تانسور اعشاری(مدل، نمایه)
سرچاپ "بار شد: شکل"، وزنها.شکل.بگیر(۰)، "x"، وزنها.شکل.بگیر(۱)
ناپایا آغاز := ""
تکرار ۴ در ستون:
آغاز = آغاز + " " + تبدیل.قالب اعشار با دقت(وزنها.در دو(۱، ستون)، ۳)
پایان
سرچاپ "جاسازی نشانهی ۱ با اینها شروع میشود:" + آغاز
وزنها.آزادسازی()
مدل.آزادسازی()
پایانپرونده ابعاد را 32 x 2 فهرست میکند، سریعترین اول، و تانسور بارشده شکل 2 x 32 دارد، یک سطر برای هر نشانه، پس در دو(نشانه، ستون) یک مقدار را میخواند. مقدارها به جای ۳٫۶ به شکل ۳٫۵۹۹ درمیآیند، چون خود مقیاس هم اعشاری ۱۶ بیتی ذخیره شده است: خطای کوانتیزهسازی بخشی از این قالب است. جدول یک مدل واقعی برای هر واژهی واژگان یک سطر دارد؛ متن نشانه را در آرایهی tokenizer.ggml.tokens پیدا کنید تا سطرش را بیابید.
فایل خراب و کلیدهای ناموجود
تجزیه جیجییواف، بارگذاری جیجییواف و بارگذاری تانسور اعشاری خطاداراند. پروندهای که GGUF نیست gguf.bad_magic است، پروندهای که در سرآیند بریده شده اتمام ناگهانی با جایگاه بایت (و اگر درون یک کلید فراداده یا تانسور بوده، نام آن در مسیر)، و دادهی تانسوری که از پایان پرونده بگذرد gguf.truncated. مدلی که هیچ چیزی ندارد هم معتبر است؛ جستجوی کلید یا تانسوری که ندارد رشتهی خالی، پیشفرض شما یا برای نمایه -1 برمیگرداند. پیش از به کار بردن نمایه با values یا tensors آن را بسنجید.
واردسازی هوش مصنوعی.جیجییواف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
تابع ریشه خطادار:
ناپایا آشغال := فشرده سازی.بافر بایت جدید()
متن := "PK this is a zip archive, not a model file"
فشرده سازی.افزودن بایتها(آشغال، متن برگردان تهی*، متن.طول())
تلاش:
جیجییواف.تجزیه جیجییواف(آشغال)
گرفتن خطا خ:
سرچاپ "فایل zip:"، خ.نام نوع()، "|"، خ.به رشته()، "|"، خ.کد
پایان
فشرده سازی.آزادسازی بافر(آشغال)
ناپایا بریده := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بایتها(بریده، "GGUF" برگردان تهی*، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(بریده، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(بریده، ۱)
تلاش:
جیجییواف.تجزیه جیجییواف(بریده)
گرفتن خطا خ:
سرچاپ "بریده:"، خ.به رشته()
پایان
فشرده سازی.آزادسازی بافر(بریده)
ناپایا خالی := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بایتها(خالی، "GGUF" برگردان تهی*، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(خالی، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(خالی، ۰)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(خالی، ۰)
ناپایا مدل := تلاش جیجییواف.تجزیه جیجییواف(خالی)
سرچاپ "مدل خالی:"، مدل.نسخه، مدل.کلیدها.طول()، مدل.تانسورها.طول()
سرچاپ "معماری: [" + مدل.فراداده رشته("general.architecture") + "]"
سرچاپ "طول بافت:"، مدل.فراداده صحیح("llama.context_length"، ۲۰۴۸)
سرچاپ "نمایه تانسور:"، مدل.نمایه تانسور("token_embd.weight")، "نمایه فراداده:"، مدل.نمایه فراداده("tokenizer.tokens")
مدل.آزادسازی()
پایانتجزیه جیجییواف مالک بافری میشود که به آن میدهید و آزادسازی مدل آن را آزاد میکند. آزادسازی بافر را هم رویش صدا نزنید: آزاد کردن دوباره برنامه را از کار میاندازد. وقتی تجزیه جیجییواف خطا میدهد، آزاد کردن بافر با خود شماست، همان کاری که برنامه با آشغال میکند.
گونهها
مقدار فراداده MetaValue
ساختار مقدار فراداده| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گونه | kind | صحیح = 0 | گونه. |
| نوع عنصر | elem_kind | صحیح = 0 | گونهی عنصرها، برای آرایه. |
| مقدار صحیح | i | صحیح۶۴ = 0 | مقدار صحیح. |
| مقدار اعشاری | f | اعشار۶۴ = 0 | مقدار اعشاری. |
| مقدار رشته | s | رشته = "" | رشته. |
| آرایه صحیح | ints | وکتور<صحیح۶۴> | آرایهی صحیح. |
| آرایه اعشاری | floats | وکتور<اعشار۶۴> | آرایهی اعشاری. |
| آرایه رشته | strs | وکتور<رشته> | آرایهی رشته، مثل واژگان توکنایزر. |
واردسازی هوش مصنوعی.جیجییواف
واردسازی فشرده سازی
واردسازی کدگذاری.دودویی
واردسازی بایگانی
واردسازی سیستم عامل
تابع رشته(ب &: فشرده سازی.بافر بایت، متن: رشته):
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، متن.طول() برگردان صحیح۶۴)
فشرده سازی.افزودن بایتها(ب، متن برگردان تهی*، متن.طول())
پایان
تابع ساختن(ب &: فشرده سازی.بافر بایت):
فشرده سازی.افزودن بایتها(ب، "GGUF" برگردان تهی*، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۱)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۳)
رشته(ب، "general.architecture")
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، جیجییواف.فراداده رشته)
رشته(ب، "llama")
رشته(ب، "llama.context_length")
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۴)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۲۰۴۸)
رشته(ب، "tokenizer.tokens")
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، جیجییواف.فراداده آرایه)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، جیجییواف.فراداده رشته)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۲)
رشته(ب، "<s>")
رشته(ب، "سلام")
رشته(ب، "w")
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، ۲)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۳)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۲)
دودویی.نوشتن طبیعی۳۲ کوچکانتها(ب، جیجییواف.نوع اعشاری سیودو)
دودویی.نوشتن طبیعی۶۴ کوچکانتها(ب، ۰)
تا فشرده سازی.طول بافر(ب) % ۳۲ != ۰:
دودویی.نوشتن طبیعی۸(ب، ۰)
پایان
تکرار ۶ در ک:
دودویی.نوشتن اعشار۳۲(ب، (ک برگردان اعشار۶۴) * ۰.۵، نادرست)
پایان
پایان
تابع ریشه خطادار:
ناپایا بافر := فشرده سازی.بافر بایت جدید()
ساختن(بافر)
مسیر := سیستم عامل.پوشه موقت() + "/salam_tiny.gguf"
_ := بایگانی.نوشتن پرونده دودویی از بافر(مسیر، بافر)
ناپایا حافظهای := تلاش جیجییواف.تجزیه جیجییواف(بافر)
سرچاپ حافظهای.تانسورها.طول()
حافظهای.آزادسازی()
ناپایا گ := تلاش جیجییواف.بارگذاری جیجییواف(مسیر)
سرچاپ گ.نسخه، گ.کلیدها.طول()، گ.تانسورها.طول()، گ.همترازی، گ.آغاز داده
سرچاپ گ.فراداده رشته("general.architecture")، گ.فراداده صحیح("llama.context_length"، ۰)، گ.فراداده صحیح("llama.block_count"، ۳۲)
توکنها := گ.مقدارها.دریافت(گ.نمایه فراداده("tokenizer.tokens"))
سرچاپ توکنها.گونه == جیجییواف.فراداده آرایه، توکنها.نوع عنصر == جیجییواف.فراداده رشته، توکنها.آرایه رشته.دریافت(۱)
ش := گ.نمایه تانسور("w")
اطلاعات := گ.تانسورها.دریافت(ش)
سرچاپ اطلاعات.نام، اطلاعات.ابعاد.طول()، اطلاعات.شمار()، اطلاعات.نوع وزن، اطلاعات.جابجایی، جیجییواف.بایتهای تانسور(گ، ش)
ناپایا ت := تلاش جیجییواف.بارگذاری تانسور اعشاری(گ، ش)
سرچاپ ت.عنصر(۰)، ت.عنصر(۵)
تلاش:
جیجییواف.بارگذاری تانسور اعشاری(گ، ۷)
گرفتن خطا خ:
سرچاپ خ.کد
پایان
ت.آزادسازی()
سرچاپ جیجییواف.نوع اعشاری شانزده، جیجییواف.نوع کوانتیزه چهار صفر، جیجییواف.نوع کوانتیزه چهار یک، جیجییواف.نوع کوانتیزه هشت صفر
گ.آزادسازی()
پایانآزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
اطلاعات تانسور TensorInfo
ساختار اطلاعات تانسور| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نام | name | رشته = "" | نام، مثل blk.0.attn_q.weight. |
| ابعاد | dims | وکتور<صحیح> | ابعاد. |
| نوع وزن | ggml_type | صحیح = 0 | گونهی وزن، یکی از ثابتهای بالا. |
| جابجایی | offset | صحیح۶۴ = 0 | جای داده نسبت به آغاز بخش داده. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
شمار count
تابع شمار(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
آزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
جیجییواف Gguf
ساختار جیجییواف| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| نسخه | version | صحیح = 0 | نسخهی قالب. |
| کلیدها | keys | وکتور<رشته> | کلیدهای فراداده. |
| مقدارها | values | وکتور<مقدار فراداده> | مقدارها، همترتیب کلیدها. |
| تانسورها | tensors | وکتور<اطلاعات تانسور> | تانسورها. |
| همترازی | alignment | صحیح = 32 | همترازی داده. |
| آغاز داده | data_offset | صحیح = 0 | آغاز بخش داده در پرونده. |
| بایتهای خام | raw | فشرده سازی.بافر بایت | بایتهای کل پرونده که در حافظه نگه داشته میشوند. |
نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نمایه فراداده meta_index
تابع نمایه فراداده(key: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
فراداده صحیح meta_int
تابع فراداده صحیح(key: رشته، dflt: صحیح۶۴): صحیح۶۴نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
فراداده رشته meta_str
تابع فراداده رشته(key: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نمایه تانسور tensor_index
تابع نمایه تانسور(name: رشته): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
آزادسازی free
تابع آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
پایاها و متغیرها
نوع اعشاری سیودو GGML_F32
پایا نوع اعشاری سیودو: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نوع اعشاری شانزده GGML_F16
پایا نوع اعشاری شانزده: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نوع کوانتیزه چهار صفر GGML_Q4_0
پایا نوع کوانتیزه چهار صفر: صحیح۳۲ = 2نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نوع کوانتیزه چهار یک GGML_Q4_1
پایا نوع کوانتیزه چهار یک: صحیح۳۲ = 3نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
نوع کوانتیزه هشت صفر GGML_Q8_0
پایا نوع کوانتیزه هشت صفر: صحیح۳۲ = 8نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
فراداده رشته META_STRING
پایا فراداده رشته: صحیح۳۲ = 8نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
فراداده آرایه META_ARRAY
پایا فراداده آرایه: صحیح۳۲ = 9نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
تابعها
بایتهای تانسور TensorBytes
تابع بایتهای تانسور(g &: جیجییواف، index: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
بارگذاری تانسور اعشاری LoadTensorF32
تابع بارگذاری تانسور اعشاری(g &: جیجییواف، index: صحیح): Throws<تانسور.تانسور>خارج از بازه، برای هر گونهی دیگر پشتیبانی نشده و برای دادهای که از پایان پرونده بگذرد اتمام ناگهانی میدهد.نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
تجزیه جیجییواف ParseGguf
تابع تجزیه جیجییواف(buf: فشرده سازی.بافر بایت): Throws<جیجییواف>نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam
بارگذاری جیجییواف LoadGguf
تابع بارگذاری جیجییواف(path: رشته): Throws<جیجییواف>.gguf را میخواند. کل پرونده در حافظه بار میشود، پس باید کوچکتر از ۲ گیگابایت باشد. اگر باز نشود یافت نشد و در غیر این صورت خطاهای تجزیه جیجییواف را میدهد، با نام پرونده در مسیر.نمونهی این مورد همراه با موارد بالاتر آمده است: ai-gguf-Read.salam