Очень медленный ответ от механизма запросов вопросов и ответов на основе LLM

Я создал бот для запросов вопросов и ответов на основе CSV-файла размером 4 МБ, который у меня есть в моем локальном хранилище. Я использую цветность для создания векторной базы данных, а модель внедрения — Instructor Large из обнимающего лица, а модель чата LLM — LlamaCPP=llama2-13b- чат , размер созданной базы данных векторов составлял около 44 МБ (она хранилась на локальном компьютере), и после создания векторной базы данных я использовал ее для создания бота вопросов и ответов, но ответ слишком медленный, на каждый ответ уходит около 30-40 минут. быть сгенерировано, кроме того, там написанокак предупреждение из самого 2-го вопроса. Не понимаю, почему так медленно...

  • Что-то не так с моделями?
  • Или это из-за возможностей моего ПК? Хотя я думаю, что мой компьютер достаточно способен обрабатывать такие небольшие данные и эти модели ... (загрузка моего процессора во время ответа менее 60%)
  • Я делаю что-то не так? Довольно новичок в этом деле

Характеристики моего ПК: Процессор: Intel(R) Core(TM) 11-го поколения i7-1165G7 с частотой 2,80 ГГц, 2,80 ГГц ОЗУ: 16 ГБ Тип системы: 64-битная ОС, процессор на базе x64

      from llama_index import load_index_from_storage
from llama_index.vector_stores import ChromaVectorStore
from llama_index.storage.index_store import SimpleIndexStore
from llama_index import LangchainEmbedding, ServiceContext, StorageContext, download_loader, LLMPredictor
from langchain.embeddings import HuggingFaceEmbeddings

from llama_index.retrievers import VectorIndexRetriever
from llama_index.query_engine import RetrieverQueryEngine
from llama_index.response_synthesizers import get_response_synthesizer

import chromadb
from chromadb.config import Settings

## create ChromaClient again
chroma_client = chromadb.PersistentClient(path="./storage/vector_storage/chromadb/")

# load the collection
collection = chroma_client.get_collection("csv_ecgi_db")

## construct storage context
load_storage_context = StorageContext.from_defaults(
    vector_store = ChromaVectorStore(chroma_collection=collection),
    index_store = SimpleIndexStore.from_persist_dir(persist_dir="./storage/index_storage/ecgi/"),
)

embeddiing_model_id = 'hkunlp/instructor-large'

embed_model = LangchainEmbedding(HuggingFaceEmbeddings(model_name = embeddiing_model_id))

## construct service context
load_service_context = ServiceContext.from_defaults(embed_model=embed_model)

## finally to load the index
load_index = load_index_from_storage(service_context=load_service_context, 
                                     storage_context=load_storage_context)

# configure response synthesizer
response_synthesizer = get_response_synthesizer(
   response_mode='compact',
    service_context = load_service_context)

# assemble query engine
query_engine = RetrieverQueryEngine(
    retriever = retriever,
    response_synthesizer = response_synthesizer,
)

# query
response = query_engine.query("what were the danish Horror movies in february of 2023?")
response

Я просмотрел git и обнаружил, что некоторые люди обсуждали одно и то же, но к какому-либо выводу не пришли, но время ответа было похоже на мое. Я ожидал, что он ответит в течение нескольких секунд, как это делает ChatGPT.

1 ответ

Вывод может быть очень медленным на процессоре. Наибольшего повышения производительности можно добиться, убедившись, что llama.cpp использует ваш графический процессор, установив правильные драйверы и библиотеки, такие как CUDA, в поддерживаемых версиях, а затем скомпилировав llama.cpp с соответствующими флагами компилятора, см. https://github . com/ggerganov/llama.cpp.

Если у вас не установлен поддерживаемый графический процессор, то бот для вопросов и ответов, который отвечает в течение нескольких секунд, нереалистичен. ChatGPT работает на многих графических процессорах параллельно. 30-40 минут по-прежнему кажутся чрезмерными, вы можете несколько сократить время, выбрав модель меньшего размера, например, чат LLaMA 7b, вместо чата LLaMA 13b, и используя квантованную модель. Однако это также снизит качество вывода.

Ваш Intel Core i7-1165G7 также кажется слабым, поскольку у него всего 4 ядра процессора. Поскольку вывод может выполняться параллельно на разных ядрах ЦП, увеличение количества ядер оказывает сильное влияние на производительность. Однако использование графического процессора увеличит производительность намного больше, чем даже самый быстрый процессор, такой как Intel i9-13900k.

Другие вопросы по тегам