ztxz16 / fastllm

纯c++的全平台llm加速库,支持python调用,chatglm-6B级模型单卡可达10000+token / s,支持glm, llama, moss基座,手机端流畅运行
Apache License 2.0
3.28k stars 332 forks source link

修复输出数据超长,且使用stream_response_raw的时候报错。 #410

Closed aofengdaxia closed 7 months ago

aofengdaxia commented 7 months ago

报错的原因

当调用以下代码生成较长的内容的时候报错,特别是比如用Python写一个贪吃蛇,就会报错。

stream_generate = model.stream_response_raw(input_tokens=inputs["input_ids"][0], **gen_kwargs, stop_token_ids=stop_token_ids)

报错的原因

不是特别的清楚,好像是self.thread_local_obj中的内存被释放了。

解决的思路

只是判断了tokenizer_decode_token__output_buffer在self.thread_local_obj是否存在,经过反复测试不再报错

TylunasLi commented 7 months ago

应该是119-120行

        self.thread_local_obj.tokenizer_encode_string__output_buffer = None
        self.thread_local_obj.tokenizer_decode_token__output_buffer = None

根据threading.local的设计,变量声明只在当前thread有效。

建议对 tokenizer_encode_string__output_buffertokenizer_decode_token__output_buffer 一并修改