基于此存储库GitHub 链接我正在尝试构建一个可以回答用户查询的系统。
我能够在 CPU 上运行模型,响应时间约为 60 秒,现在我想提高响应时间,所以我尝试将模型加载到 GPU 上。
系统规格
这是我的疑问
代码
from langchain.llms import CTransformers
from dotenv import find_dotenv, load_dotenv
import box
import yaml
from accelerate import Accelerator
import torch
from torch import cuda
from ctransformers import AutoModelForCausalLM
# Check if GPU is available and set device accordingly
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(f"Using Device: {device} in llm.py file")
# Load environment variables from .env file
load_dotenv(find_dotenv())
# Import config vars
with open('config/config.yml', 'r', encoding='utf8') as ymlfile:
cfg = box.Box(yaml.safe_load(ymlfile))
accelerator = Accelerator()
def build_llm():
config = {'max_new_tokens': cfg.MAX_NEW_TOKENS,
'temperature': cfg.TEMPERATURE,
'gpu_layers': 150
}
llm = CTransformers(model=cfg.MODEL_BIN_PATH,
model_type=cfg.MODEL_TYPE,
config= config
)
llm,config = accelerator.prepare(llm,config)
return llm
这是模型中加载的部分,但是在查询时,CPU利用率飙升至100%,GPU利用率保持在2%
由于您正在使用
accelerate
,因此最好的方法是检查 accelerate 文档。请注意,标准 Llama2 对于您的 GPU 来说太大,因此您可能需要使用量化版本。
这要看情况。 GPU 推理的大部分速度提升来自批量推理。如果您一次对单个项目运行推理,您可能不会看到速度的重大改进。对单个项目的推理往往更多地受到内存传输而不是触发器的瓶颈,这就是为什么像 llama.cpp 这样的代码库在笔记本电脑上获得良好性能的原因。 如何提高答题质量?
我们应该如何制作模型来回答仅与文档相关的问题?
当我与从事此工作的人联系时,告诉我“ctransformers[cuda]”用于将模型加载到GPU上,但是ctransformers使用的CUDA版本是11.7.11