vllm [用法]:spec_decode和repetition_penalty可以一起使用吗?

j5fpnvbx  于 2个月前  发布在  其他
关注(0)|答案(4)|浏览(39)

Your current environment

Nvidia driver version: 535.104.05
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_adv.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_cnn.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_precompiled.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_engines_runtime_compiled.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_graph.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_heuristic.so.9.0.0
/usr/lib/x86_64-linux-gnu/libcudnn_ops.so.9.0.0
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
CPU:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 43 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 128
On-line CPU(s) list: 0-127
Vendor ID: AuthenticAMD
Model name: AMD EPYC 7452 32-Core Processor
CPU family: 23
Model: 49
Thread(s) per core: 2
Core(s) per socket: 32
Socket(s): 2
Stepping: 0
Frequency boost enabled: Yes
CPU max MHz: 23500.00000
CPU min MHz: 15000.00000
BogoMIPS: 4699.94
Flags: fpu vme de pse tsc msr pae mce cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq monitor ds_cpl vmx est tm pbe syscalls smep mmxext fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt aes xsave avx f16c rdrand lahf_lm abm intel_pt xsaveopt xgetbv1 xsaves cba _xsave cmovpe popcnt avx2 fma4 _mm_popcnt_u32 _mm_cmplt_u32 _mm_cmpgt_u32 _mm_comilt_u32 _mm_comigt_u32 _mm_movehl_ps _mm_loadh_pd _mm_loadl_pi _mm_loadh_po _mm_loadw_pd _mm_loadl_ps _mm_loadh_si _mm_loadw_si _mm_storel_pi _mm_storeh_pd _mm_storel_ps _mm_storeh_si _mm_storew_si _mm_streamalign _mm_getcsr _mm_setcsr _mm_getpcid _mm_putcsr _mm_getpattrm _mm_setpattrm _mm_getcrc32 _mm_setcrc32 _mm_getcontext _mm_setcontext _mm_getgloballock _mm

如何使用vllm

spec_decode和repetition_penalty能否一起使用?

3yhwsihp

3yhwsihp2#

当使用spec解码时,每次迭代可能会生成多个tokens,如T0、T1、T2。因为在同一个迭代(forward → penalty → sample)中生成的三个tokens相同,所以我认为当vLLM使用重复惩罚策略计算T2的logits时,T0和T1是不确定的,vLLm无法确定T0和T1是否与T2相同,那么如何惩罚T2的logits?
@cadedaniel 请问您能解释一下这个问题吗?或者指出我的理解哪里有误?非常感谢!

kuuvgm7e

kuuvgm7e3#

简短的答案是,计算第一个投机性代币等价于计算 P(x_1|prefix) ,其中 x_1 是第一个投机性代币。对于 x_2,它是 P(x_2|prefix+x_1) ,对于第三个投机性代币 P(x_3|prefix+x_1+x_2) 也是如此。因为在评分过程中,所有的 x_n 都是已知的,我们能够正确地为每个位置应用重复惩罚。最后,如果任何 x_n 在拒绝采样过程中被拒绝,所有后续的投机性代币也会被拒绝,这保留了目标模型的分布(包括从重复惩罚等采样参数引起的目标模型分布的扰动)。

ccrfmcuu

ccrfmcuu4#

简短的答案是,计算第一个投机性代币等价于计算 P(x_1|prefix) ,其中 x_1 是第一个投机性代币。对于 x_2,它是 P(x_2|prefix+x_1) ,对于第三个投机性代币 P(x_3|prefix+x_1+x_2) 也是如此。因为在评分过程中,所有的 x_n 都是已知的,我们能够正确地为每个位置应用重复惩罚。最后,如果任何 x_n 在拒绝采样过程中被拒绝,所有后续的投机性代币也会被拒绝,这保留了目标模型的分布(包括从像重复惩罚这样的采样参数引起的对目标模型分布的扰动)。
明白了!非常感谢!

相关问题