<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      LLM采樣后處理總結:LLM的后處理的cpp實現(xiàn)

      LLM采樣后處理總結:LLM的后處理的cpp實現(xiàn)

      在經(jīng)過LLM的lm_head之后,會得到[batch, vocab_size]大小的矩陣向量,此時需要對輸出的邏輯張量進行采樣,除了beam_search的貪心策略,還有repetition_penalty、temperature、top_k、top_p等幾種控制采樣的方法。

      repetition_penalty

      repetition_penalty的主要作用是控制重復,這里first和last分別為vocab中的第一個元素和最后一個元素的位置,input_ids為之前輸出的文本id。
      也即是把之前輸出過的內容全部變小,那么就可以防止文本出現(xiàn)不斷重復的情況,penalty越小,懲罰力度越大,penalty越大,懲罰力度越小,重復概率就會增加。

      void sampling_repetition_penalty(float *first, float *last, const std::vector<int> &input_ids,
                                                             float penalty) {
          std::unordered_set<int> unique_input_ids(input_ids.begin(), input_ids.end());
          for (int id : unique_input_ids) {
              if (first[id] > 0) {
                  first[id] /= penalty;
              } else {
                  first[id] *= penalty;
              }
          }
      }
      

      temperature

      temperature是控制softmax下的平滑參數(shù),相當于在softmax前每個邏輯值都進行了放縮。
      當temp越大的時候,此時softmax值之間的差距會減小,分布就越均勻,此時采樣出的結果就越隨機,反之就會使得原本高概率的的變得更高低的更低減少了隨機性。

      void sampling_temperature(float *first, float *last, float temp) {
          float inv_temp = 1.f / temp;
          for (float *it = first; it != last; it++) {
              *it *= inv_temp;
          }
      }
      

      top_k

      top_k是取前k個,直接排序拿到概率最大的前k個。

      void sampling_top_k(TokenIdScore *first, TokenIdScore *kth, TokenIdScore *last) {
          std::nth_element(first, kth, last, std::greater<TokenIdScore>());
      }
      

      top_p

      top_p是先對所有的值進行softmax,然后找到滿足sum_p <= top_p的最小集合,然后對這個集合內的數(shù)再進行softmax和采樣。
      一種簡單的做法是將所有值進行排序,然后貪心找到滿足條件的前k個。
      示例代碼中使用了一種類似于快速排序的方法,每次找mid點,將大于mid和小于mid的分為兩堆,要么在大的一堆要么在小的一堆。
      當在大的一堆中時就mid往前移動,在小的一堆時則更新top_p = top_p-sum_p,直至找到對應的位置。
      時間復雜度上會稍微比先排序快一些。

      void sampling_softmax_inplace(TokenIdScore *first, TokenIdScore *last) {
          float max_score = std::max_element(first, last)->score;
          float sum = 0.f;
          for (TokenIdScore *p = first; p != last; p++) {
              float s = std::exp(p->score - max_score);
              p->score = s;
              sum += s;
          }
          float inv_sum = 1.f / sum;
          for (TokenIdScore *p = first; p != last; p++) {
              p->score *= inv_sum;
          }
      }
      
      TokenIdScore *sampling_top_p(TokenIdScore *first, TokenIdScore *last, float top_p) {
          // fast top_p in expected O(n) time complexity
          sampling_softmax_inplace(first, last);
      
          while (first + 1 < last) {
              float pivot_score = (last - 1)->score; // use mid score?
              TokenIdScore *mid =
                  std::partition(first, last - 1, [pivot_score](const TokenIdScore &x) { return x.score > pivot_score; });
              std::swap(*mid, *(last - 1));
      
              float prefix_sum =
                  std::accumulate(first, mid, 0.f, [](float sum, const TokenIdScore &x) { return sum + x.score; });
              if (prefix_sum >= top_p) {
                  last = mid;
              } else if (prefix_sum + mid->score < top_p) {
                  first = mid + 1;
                  top_p -= prefix_sum + mid->score;
              } else {
                  return mid + 1;
              }
          }
          return last;
      }
      
      posted @ 2023-10-11 18:09  wildkid1024  閱讀(588)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品自在自线视频| 人妻少妇88久久中文字幕 | 久久av无码精品人妻系列试探| 亚洲午夜亚洲精品国产成人| 中文字幕人妻不卡精品| 东京一本一道一二三区| 国产99视频精品免费视频36| 精品一区二区久久久久久久网站| 亚洲性夜夜天天天| 粉嫩av蜜臀一区二区三区| 国产永久免费高清在线观看| 日韩在线视频一区二区三| 贵南县| 精品免费看国产一区二区| 乱色欧美激惰| 精品亚洲AⅤ无码午夜在线| 性动态图无遮挡试看30秒| 风流老熟女一区二区三区 | 亚洲二区中文字幕在线| 91老肥熟女九色老女人| 一区一区三区产品乱码| 精品国产一区二区亚洲人| 伊人久久大香线蕉av一区二区| 人成午夜免费视频无码| 澄迈县| 国产AV巨作丝袜秘书| 精品无码久久久久久久久久| 国产麻豆一精品一av一免费| 国产成人永久免费av在线| 国产国产午夜福利视频| 久久亚洲AV成人网站玖玖| 亚洲av精选一区二区| 亚洲国产中文字幕在线视频综合| 国产精品视频一区二区噜| 最新亚洲av日韩av二区| 国产精品中文字幕第一区| 在国产线视频A在线视频| 国产精品爽黄69天堂A| 国产内射xxxxx在线| 国产成人精品一区二区秒拍1o| 精品久久久久久中文字幕202|