


مرحبًا بك في Libllm ، وهو مشروع مفتوح المصدر مصمم لاستدلال فعال لنماذج اللغة الكبيرة (LLM) على أجهزة الكمبيوتر الشخصية العادية والأجهزة المحمولة. يتم تنفيذ النواة في C ++ 14 ، دون أي تبعيات من طرف ثالث (مثل BLAS أو Sentnespiece) ، مما يتيح تشغيل سلس عبر مجموعة متنوعة من الأجهزة.
مرحبًا بك في LiBllm ، وهو مشروع مفتوح المصدر مصمم لاستدلال فعال لنماذج اللغة الكبيرة (LLM) على أجهزة الكمبيوتر الشخصية والأجهزة المحمولة المتوسطة. تتم كتابة النواة في C ++ 14 ، وليس لها تبعيات طرف ثالث (Blas ، SentencePiece ، إلخ) ، ويمكن أن تعمل بسلاسة في الأجهزة المختلفة.
| نموذج | تحميل | LLM الأمر |
|---|---|---|
| الفهرس -1.9b-character (لعب الأدوار) | [؟ HF] [MS] | LLM الدردشة -M الفهرس: الحرف |
| الفهرس -1.9B-Chat | [؟ HF] [MS] | LLM الدردشة -M فهرس |
| Qwen2-1.5b-instruct | [؟ HF] [MS] | LLM Chat -M Qwen: 1.5b |
| Qwen2-7B-instruct | [؟ HF] [MS] | LLM Chat -M Qwen: 7B |
| llama3.2-1b-instruct | [؟ HF] [MS] | LLM Chat -M Llama3.2: 1B |
| llama3.2-3b-instruct | [؟ HF] [MS] | LLM Chat -M Llama3.2 |
| الهمس large-v3 | [؟ HF] [MS] | LLM نسخ -M الهمس |
HF = huggingface ، MS = modelscope
| نظام التشغيل | منصة | كودا | AVX2 | AVX512 | ASIMDHP |
|---|---|---|---|---|---|
| Linux | x64 | ✅ | ✅ | ✅ | |
| النوافذ | x64 | ✅ | ✅ | ✅ | |
| ماكوس | ARM64 | ✅ |
llm chat -model index-character بتنزيل نموذج index-character تلقائيًا من؟ HuggingFace. للتشغيل والدردشة مع bilibili-index-1.9b-character:
$ llm chat -m index-character ستقوم تلقائيًا بتنزيل Bilibili-Index-1.9B-Character من Huggingface أو ModelsCope (في الصين) ، وبدء تشغيل CLI في LLM.
الدردشة مع نموذج Bilibili-Index-1.9B-Character :
$ llm chat -m index-character ستقوم llm تلقائيًا بتنزيل نموذج Bilibili-Index-1.9B-Character من Huggingface أو ModelsCope (إذا كان IP صيني) وابدأ في التحدث إليه.
$ src/libllm/llm chat -m index-character
INFO 2024-07-30T12:02:28Z interface.cc:67] ISA support: AVX2=1 F16C=1 AVX512F=1
INFO 2024-07-30T12:02:28Z interface.cc:71] Use Avx512 backend.
INFO 2024-07-30T12:02:30Z matmul.cc:43] Use GEMM from cuBLAS.
INFO 2024-07-30T12:02:30Z cuda_operators.cc:51] cuda numDevices = 2
INFO 2024-07-30T12:02:30Z cuda_operators.cc:52] cuda:0 maxThreadsPerMultiProcessor = 2048
INFO 2024-07-30T12:02:30Z cuda_operators.cc:54] cuda:0 multiProcessorCount = 20
INFO 2024-07-30T12:02:30Z thread_pool.cc:73] ThreadPool started. numThreads=20
INFO 2024-07-30T12:02:30Z llm.cc:204] read model package: /home/xiaoych/.libllm/models/bilibili-index-1.9b-character-q4.llmpkg
INFO 2024-07-30T12:02:30Z model_for_generation.cc:43] model_type = index
INFO 2024-07-30T12:02:30Z model_for_generation.cc:44] device = cuda
INFO 2024-07-30T12:02:31Z state_map.cc:66] 220 tensors read.
Please input your question.
Type ' :new ' to start a new session (clean history).
Type ' :sys <system_prompt> ' to set the system prompt and start a new session .
> hi
您好!我是Index,请问有什么我可以帮助您的吗?
(12 tokens, time=0.76s, 63.47ms per token)
> $ mkdir build && cd build
$ cmake ..
$ make -jيرجى تثبيت OpenMP قبل cmake. ملاحظة: من المتوقع حاليًا أن تكون LiBllm Macos بطيئة للغاية نظرًا لعدم وجود kernel AARCH64 لذلك.
% brew install libomp
% export OpenMP_ROOT= $( brew --prefix ) /opt/libomp
% mkdir build && cd build
% cmake ..
% make -j ملاحظة: حدد -DCUDAToolkit_ROOT=<CUDA-DIR> إذا كانت هناك إصدارات متعددة CUDA في نظام التشغيل الخاص بك.
التوصية الإصدارات هي:
$ mkdir build && cd build
$ cmake -DWITH_CUDA=ON [-DCUDAToolkit_ROOT =< CUDA-DIR > ] ..
$ make -j from libllm import Model , ControlToken
model = Model ( "tools/bilibili_index.llmpkg" )
prompt = [ ControlToken ( "<|reserved_0|>" ), "hi" , ControlToken ( "<|reserved_1|>" )]
for chunk in model . complete ( prompt ):
print ( chunk . text , end = "" , flush = True )
print ( " n Done!" ) package main
import (
"fmt"
"log"
"github.com/ling0322/libllm/go/llm"
)
func main () {
model , err := llm . NewModel ( "../../tools/bilibili_index.llmpkg" , llm . Auto )
if err != nil {
log . Fatal ( err )
}
prompt := llm . NewPrompt ()
prompt . AppendControlToken ( "<|reserved_0|>" )
prompt . AppendText ( "hi" )
prompt . AppendControlToken ( "<|reserved_1|>" )
comp , err := model . Complete ( llm . NewCompletionConfig (), prompt )
if err != nil {
log . Fatal ( err )
}
for comp . IsActive () {
chunk , err := comp . GenerateNextChunk ()
if err != nil {
log . Fatal ( err )
}
fmt . Print ( chunk . Text )
}
fmt . Println ()
}فيما يلي مثال على نموذج التصدير -1.9b من Huggingface.
$ cd tools
$ python bilibili_index_exporter.py
-huggingface_name IndexTeam/Index-1.9B-Character
-quant q4
-output index.llmpkg
بعد ذلك ، سيتم كتابة جميع الوحدات المطلوبة إلى IndexTeam/Index-1.9B-Character ، بما في ذلك النموذج ، الرمز المميز والتكوينات إلى index.llmpkg .