采样器
BeamSearchSampler
Beam Search 采样算法。
属性
名称 | 类型 | 描述 |
---|---|---|
samples |
每个输入序列的采样数量。等同于 Beam 数量。 |
源代码位于 outlines/samplers.py
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 |
|
__call__(next_token_logits, sequence_weights, _)
调用 Beam Search 采样器。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
next_token_logits
|
DoubleTensor
|
一个形状为 |
必需 |
sequence_weights
|
DoubleTensor
|
一个形状为 |
必需 |
rng
|
一个随机数生成器。 |
必需 |
返回值
类型 | 描述 |
---|---|
一个元组,包含一个数组,该数组包含采样词元的 ID,形状为
|
|
``(n_seqs, 1)``,一个数组,包含每个采样 ID 的祖先,形状为
|
|
``(n_seqs,)``,以及一个数组,包含每个序列的更新累积权重,形状为
|
|
``(n_seqs,)``。
|
|
源代码位于 outlines/samplers.py
GreedySampler
贪婪采样算法。
贪婪采样是指在每一步选择似然性最大的词元。
我们只允许进行一次采样。我们可以赋予这一个含义,例如第 k 个样本表示第 k 个最有可能的词元。在这种情况下,它将等同于没有序列权重的 Beam Search。
属性
名称 | 类型 | 描述 |
---|---|---|
samples |
每个输入序列的采样数量。 |
源代码位于 outlines/samplers.py
__call__(next_token_logits, sequence_weights, _)
调用贪婪采样器。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
next_token_logits
|
DoubleTensor
|
一个形状为 |
必需 |
sequence_weights
|
DoubleTensor
|
一个形状为 |
必需 |
rng
|
一个随机数生成器。 |
必需 |
返回值
类型 | 描述 |
---|---|
一个元组,包含一个数组,该数组包含采样词元的 ID,形状为
|
|
``(n_seqs, 1)``,一个数组,包含每个采样 ID 的祖先,形状为
|
|
``(n_seqs,)``,以及一个数组,包含每个序列的更新累积权重,形状为
|
|
``(n_seqs,)``。
|
|
源代码位于 outlines/samplers.py
MultinomialSampler
多项式采样算法。
多项式采样是指假设下一个词元的分布是由下一个词元 logits 参数化的分类分布,然后从中随机采样下一个词元。
属性
名称 | 类型 | 描述 |
---|---|---|
samples |
每个输入序列的采样数量。 |
源代码位于 outlines/samplers.py
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
|
__call__(next_token_logits, sequence_weights, rng)
调用多项式采样器。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
next_token_logits
|
DoubleTensor
|
一个形状为 |
必需 |
sequence_weights
|
DoubleTensor
|
一个形状为 |
必需 |
rng
|
生成器
|
一个随机数生成器。 |
必需 |
返回值
类型 | 描述 |
---|---|
一个元组,包含一个数组,该数组包含采样词元的 ID,形状为
|
|
``(n_seqs, 1)``,一个数组,包含每个采样 ID 的祖先,形状为
|
|
``(n_seqs,)``,以及一个数组,包含每个序列的更新累积权重,形状为
|
|
``(n_seqs,)``。
|
|
源代码位于 outlines/samplers.py
SamplingParameters
数据类
keep_top_k_logits(k)
构建一个函数,该函数会掩盖小于前 k
个 logits 值的 logits 值。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
k
|
int
|
排名低于此值的 logit 值将被替换为 |
必需 |
源代码位于 outlines/samplers.py
keep_top_p_logits(p)
构建一个函数,该函数会掩盖累积概率低于某个阈值的最低概率词元。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
p
|
float
|
阈值。我们保留累积分布大于或等于 |
必需 |
源代码位于 outlines/samplers.py
rescale_logits(temperature)
构建一个函数,该函数会指数级地重新缩放词元概率。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
temperature
|
float
|
我们用于重新缩放 logits 的值。 |
必需 |