مدل زبانی بزرگ llm
اجرای مدلهای زبانی Llama و Qwen از پروندهی GGUF.
واردسازی مدل زبانی بزرگ
این بسته مدلهای زبانی بزرگ با معماری Llama، مثل Llama، Qwen و Mistral، را بی وابستگی بیرونی روی پردازنده اجرا میکند. مدل کوانتیزهشده را در قالب GGUF دانلود کنید، با بارگذاری مدل جیجییواف بخوانید و با تولید متن بسازید.
برای کنترل بیشتر، پیشرو لاجیتها را میدهد و نمونهبردار با دما، top-k، top-p و جریمهی تکرار توکن بعدی را برمیگزیند. نمونهی اجراشدنی یک مدل کوچک تصادفی میسازد تا بی دانلود کار کند.
گونهها
توکنساز Tokenizer
ساختار توکنساز| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| kind | kind | صحیح | گونه. |
| tokens | tokens | وکتور<رشته> | متن توکنها. |
| scores | scores | وکتور<اعشار۶۴> | امتیازها برای SentencePiece. |
| index | index | نگاشت<رشته، صحیح> | شمارهی هر توکن. |
| merges | merges | نگاشت<رشته، صحیح> | رتبهی ادغامهای BPE. |
| merge_keys | merge_keys | وکتور<رشته> | کلیدهای ادغام. |
| bos | bos | صحیح = -1 | شمارهی توکن آغاز؛ ۱- یعنی ندارد. |
| eos | eos | صحیح = -1 | شمارهی توکن پایان. |
| unk | unk | صحیح = 0 | شمارهی توکن ناشناخته. |
| add_bos | add_bos | منطقی = درست | رمزگذاری توکن آغاز را بیفزاید. |
| byte_ids | byte_ids | وکتور<صحیح> | شمارهی توکن هر بایت. |
| b2u | b2u | وکتور<صحیح> | نگاشت بایت به نویسه در BPE بایتی. |
واردسازی مدل زبانی بزرگ
واردسازی تانسور
روال ریشه:
ناپایا توکنساز := مدل زبانی بزرگ.توکنساز جدید(مدل زبانی بزرگ.توکنساز بایتی)
هر متن در ["a"، "b"، "c"، "ab"]:
_ := توکنساز.افزودن توکن(متن، ۰.۰)
پایان
توکنساز.افزودن ادغام("a"، "b")
توکنساز.پایان()
توکنساز.add_bos = نادرست
ناپایا شناسهها := توکنساز.رمزگذاری("abcab")
سرچاپ توکنساز.اندازه()، شناسهها.طول()، توکنساز.متن توکن(شناسهها.دریافت(۰))، توکنساز.رمزگشایی(شناسهها)
سرچاپ مدل زبانی بزرگ.توکنساز قطعه جمله، مدل زبانی بزرگ.روپ عادی، مدل زبانی بزرگ.روپ نئوایکس
ناپایا پیکربندی := مدل زبانی بزرگ.پیکربندی { vocab = توکنساز.اندازه()، dim = ۸، layers = ۲، heads = ۲، kv_heads = ۱، ff = ۱۶، ctx = ۳۲ }
سرچاپ پیکربندی.بعد سر()
ناپایا مدل := مدل زبانی بزرگ.مدل تصادفی(پیکربندی، ۷)
ناپایا حافظه := مدل زبانی بزرگ.حافظه کلید مقدار جدید(پیکربندی)
سرچاپ مدل.ok، مدل.layers.طول()، حافظه.ctx
ناپایا لاجیتها := مدل زبانی بزرگ.پیشرو(مدل، حافظه، شناسهها)
سرچاپ تانسور.رشته شکل(لاجیتها)، حافظه.len
ناپایا آخر := مدل زبانی بزرگ.ردیف لاجیت(لاجیتها، شناسهها.طول() - ۱)
حریص := مدل زبانی بزرگ.حریصانه(لاجیتها، شناسهها.طول() - ۱)
سرچاپ تانسور.رشته شکل(آخر)، حریص == تانسور.نمایه بیشینه همه(آخر)
ناپایا نمونهبردار := مدل زبانی بزرگ.نمونهبردار جدید(۱)
نمونهبردار.temperature = ۰.۸
نمونهبردار.top_k = ۳
نمونهبردار.top_p = ۰.۹
نمونهبردار.repeat_penalty = ۱.۱
ناپایا اخیر := وکتور {} برگردان وکتور<صحیح>
بعدی := نمونهبردار.نمونه(لاجیتها، شناسهها.طول() - ۱، اخیر)
سرچاپ بعدی >= ۰ و بعدی < توکنساز.اندازه()
حافظه.بازنشانی()
تولیدی := مدل زبانی بزرگ.تولید شناسهها(مدل، حافظه، شناسهها، ۴، نمونهبردار، -۱)
سرچاپ تولیدی.طول()
حافظه.بازنشانی()
متن تولیدی := مدل زبانی بزرگ.تولید(مدل، حافظه، توکنساز، "ab"، ۳، نمونهبردار)
سرچاپ متن تولیدی.طول() > ۰
تانسور.آزادسازی(لاجیتها)
تانسور.آزادسازی(آخر)
حافظه.آزادسازی()
مدل.آزادسازی()
توکنساز.آزادسازی()
پایانافزودن توکن add_token
روال افزودن توکن(text: رشته، score: اعشار۶۴): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
افزودن ادغام add_merge
روال افزودن ادغام(a: رشته، b: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
پایان finish
روال پایان()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
اندازه size
روال اندازه(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
متن توکن token_text
روال متن توکن(id: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
رمزگذاری encode
روال رمزگذاری(text: رشته): وکتور<صحیح>نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
رمزگشایی decode
روال رمزگشایی(ids &: وکتور<صحیح>): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
نمونهبردار Sampler
ساختار نمونهبردار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| temperature | temperature | اعشار۶۴ = 1 | دما؛ کمتر یعنی پاسخ قطعیتر. |
| top_k | top_k | صحیح = 0 | فقط از k توکن محتملتر؛ صفر یعنی بی محدودیت. |
| top_p | top_p | اعشار۶۴ = 1 | فقط از توکنهایی که مجموع احتمالشان تا p است. |
| repeat_penalty | repeat_penalty | اعشار۶۴ = 1 | جریمهی تکرار توکنهای اخیر. |
| rng | rng | tensor.Rng | مولد تصادفی. |
نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
نمونه sample
روال نمونه(logits &: tensor.Tensor، row: صحیح، recent &: وکتور<صحیح>): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
پیکربندی Config
ساختار پیکربندی| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| vocab | vocab | صحیح = 0 | اندازهی واژگان. |
| dim | dim | صحیح = 0 | اندازهی جاسازی. |
| layers | layers | صحیح = 0 | شمار لایهها. |
| heads | heads | صحیح = 1 | شمار سرهای توجه. |
| kv_heads | kv_heads | صحیح = 1 | شمار سرهای کلید و مقدار؛ کمتر از heads یعنی توجه گروهی. |
| ff | ff | صحیح = 0 | اندازهی لایهی پیشرو. |
| ctx | ctx | صحیح = 512 | بیشترین طول متن. |
| eps | eps | اعشار۶۴ = 1e-05 | عدد کوچک نرمالسازی. |
| rope_theta | rope_theta | اعشار۶۴ = 10000 | پایهی جاسازی چرخشی. |
| rope_kind | rope_kind | صحیح | گونهی جاسازی چرخشی، یکی از ثابتهای روپ .... |
نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
بعد سر head_dim
روال بعد سر(): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
لایه Layer
ساختار لایه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| attn_norm | attn_norm | tensor.Tensor | نرمالسازی پیش از توجه. |
| wq | wq | tensor.Tensor | وزن پرسش. |
| wk | wk | tensor.Tensor | وزن کلید. |
| wv | wv | tensor.Tensor | وزن مقدار. |
| wo | wo | tensor.Tensor | وزن خروجی توجه. |
| ffn_norm | ffn_norm | tensor.Tensor | نرمالسازی پیش از لایهی پیشرو. |
| w_gate | w_gate | tensor.Tensor | وزن دروازهی SwiGLU. |
| w_up | w_up | tensor.Tensor | وزن بالابر. |
| w_down | w_down | tensor.Tensor | وزن پایینبر. |
نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
مدل Model
ساختار مدل| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| cfg | cfg | پیکربندی | پیکربندی. |
| tok_embed | tok_embed | tensor.Tensor | جدول جاسازی توکنها. |
| layers | layers | وکتور<لایه> | لایهها. |
| out_norm | out_norm | tensor.Tensor | نرمالسازی پایانی. |
| out_head | out_head | tensor.Tensor | وزن خروجی به واژگان. |
| ok | ok | منطقی = نادرست | درست ساخته یا بارگذاری شد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
حافظه کلید مقدار KVCache
ساختار حافظه کلید مقدار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| k | k | وکتور | کلیدها، یکی برای هر لایه. |
| v | v | وکتور | مقدارها. |
| len | len | صحیح = 0 | شمار توکنهای پردازششده. |
| ctx | ctx | صحیح = 0 | گنجایش. |
نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
بازنشانی reset
روال بازنشانی()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
آزادسازی free
روال آزادسازی()نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
پایاها و متغیرها
توکنساز قطعه جمله TOK_SPM
پایا توکنساز قطعه جمله: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
توکنساز بایتی TOK_BPE
پایا توکنساز بایتی: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
روپ عادی ROPE_NORMAL
پایا روپ عادی: صحیح۳۲ = 0نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
روپ نئوایکس ROPE_NEOX
پایا روپ نئوایکس: صحیح۳۲ = 1نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
روالها
توکنساز جدید NewTokenizer
روال توکنساز جدید(kind: صحیح): توکنسازنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
نمونهبردار جدید NewSampler
روال نمونهبردار جدید(seed: صحیح۶۴): نمونهبردارنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
حریصانه Greedy
روال حریصانه(logits &: tensor.Tensor، row: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
تولید شناسهها GenerateIds
روال تولید شناسهها(m &: مدل، cache &: حافظه کلید مقدار، prompt_ids &: وکتور<صحیح>، max_new: صحیح، sp &: نمونهبردار، eos: صحیح): وکتور<صحیح>نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
تولید Generate
روال تولید(m &: مدل، cache &: حافظه کلید مقدار، tok &: توکنساز، prompt: رشته، max_new: صحیح، sp &: نمونهبردار): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
پیشرو Forward
روال پیشرو(m &: مدل، cache &: حافظه کلید مقدار، tokens &: وکتور<صحیح>): tensor.Tensorنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
ردیف لاجیت LogitsRow
روال ردیف لاجیت(logits &: tensor.Tensor، row: صحیح): tensor.Tensorنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
پیکربندی از جیجییواف ConfigFromGguf
روال پیکربندی از جیجییواف(g &: gguf.Gguf): پیکربندیواردسازی مدل زبانی بزرگ
واردسازی جیجییواف
روال ریشه:
مسیر := "models/qwen2.5-0.5b-instruct-q8_0.gguf"
ناپایا مدل := مدل زبانی بزرگ.مدل {}
ناپایا توکنساز := مدل زبانی بزرگ.توکنساز جدید(مدل زبانی بزرگ.توکنساز بایتی)
اگر وارونه مدل زبانی بزرگ.بارگذاری مدل جیجییواف(مسیر، مدل، توکنساز):
سرچاپ "مدل بارگذاری نشد:"، مسیر
برگشت
پایان
ناپایا حافظه := مدل زبانی بزرگ.حافظه کلید مقدار جدید(مدل.cfg)
ناپایا نمونهبردار := مدل زبانی بزرگ.نمونهبردار جدید(۴۲)
نمونهبردار.temperature = ۰.۷
سرچاپ مدل زبانی بزرگ.تولید(مدل، حافظه، توکنساز، "پایتخت ایران"، ۲۰، نمونهبردار)
ناپایا سالم := نادرست
ناپایا پرونده := جیجییواف.بارگذاری جیجییواف(مسیر، سالم)
پیکربندی := مدل زبانی بزرگ.پیکربندی از جیجییواف(پرونده)
سرچاپ پیکربندی.vocab، پیکربندی.dim، پیکربندی.layers، پیکربندی.heads، پیکربندی.kv_heads، پیکربندی.ff، پیکربندی.ctx، پیکربندی.eps، پیکربندی.rope_theta، پیکربندی.rope_kind
ناپایا مدل۲ := مدل زبانی بزرگ.مدل از جیجییواف(پرونده)
ناپایا توکنساز۲ := مدل زبانی بزرگ.توکنساز از جیجییواف(پرونده)
سرچاپ توکنساز۲.bos، توکنساز۲.eos، توکنساز۲.unk
مدل۲.آزادسازی()
توکنساز۲.آزادسازی()
پرونده.آزادسازی()
حافظه.آزادسازی()
مدل.آزادسازی()
توکنساز.آزادسازی()
پایانمدل از جیجییواف ModelFromGguf
روال مدل از جیجییواف(g &: gguf.Gguf): مدلنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Load.salam
توکنساز از جیجییواف TokenizerFromGguf
روال توکنساز از جیجییواف(g &: gguf.Gguf): توکنسازنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Load.salam
بارگذاری مدل جیجییواف LoadGgufModel
روال بارگذاری مدل جیجییواف(path: رشته، m &: مدل، t &: توکنساز): منطقی.gguf بارگذاری میکند.نمونهی این مورد همراه با موارد بالاتر آمده است: llm-Load.salam
حافظه کلید مقدار جدید NewKVCache
روال حافظه کلید مقدار جدید(cfg &: پیکربندی): حافظه کلید مقدارنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam
مدل تصادفی RandomModel
روال مدل تصادفی(cfg &: پیکربندی، seed: صحیح۶۴): مدلنمونهی این مورد همراه با موارد بالاتر آمده است: llm-Generate.salam