Rytonli

Results 5 comments of Rytonli

> 这个地方改成presence_penalty试试? https://github.com/InternLM/lmdeploy/blob/main/lmdeploy/turbomind/turbomind.py#L603-L604 不好意思忘记说明,我这边是直接封了C++接口去用的,已确定presence_penalty是生效了的。 问题的关键是在于vllm的presence_penalty参数设置参考范围[-2.0,2.0]是否适用于lmdeploy,对于1000的logits来说这个值太小了。如果不适用的话,有建议的参数设置范围吗?

查看源码发现,lmdeploy的采样流程似乎与vllm不太一致。 lmdeploy的顺序是:temperature -> repetition_penalty/presence_penalty -> topk/topp vllm的顺序是:frequency_penalty/presence_penalty -> temperature -> topk/topp 看上去vllm的比较合理,temperature的值设的太小时,会影响presence_penalty的值设置。 我在将temperature和presence_penalty的顺序调换后,不再出现上述问题。

@irexyc 是,从vllm迁移过来的。参数的设置基本保持和vllm一致,temperature设置一般不超过0.1,frequency_penalty一般也不超过0.5。vllm的logits范围的话没太注意,是其他人做的,从他给出的来看跟lmdeploy的差不多。

![image](https://github.com/InternLM/lmdeploy/assets/103549265/3718294e-ab9f-49ea-8d05-539978ded7a5) 打开了FT_DEBUG_LEVEL=DEBUG,貌似是执行LlamaV2::ContextDecode()的invokeInputIdsEmbeddingLookupPosEncoding()时出错了。 模型初始化参数如下: ![image](https://github.com/InternLM/lmdeploy/assets/103549265/a8569899-27b7-4096-9d4f-875f5a8e0291) 这里用的是llama2-13B模型,单显卡。 在输入一个较长的序列时(input_length=1769)时出现。

1. 错误1貌似是由于释放LlamaModelInstance后立即销毁cudaStream句柄导致的。但我看allocator.h的代码: ```c++ void free(void** ptr, bool _ = false) const { ... check_cuda_error(cudaFreeAsync(*ptr, stream_)); cudaStreamSynchronize(stream_); ... } ``` 释放显存后是有同步等待的,我对cuda编程并不熟悉,望解答。 2. 错误2是由于输入的token_id不合法导致(token_id < 0 或 token_id >= vocab_size)