model()與model.generate()的output相同嗎?

#3
by cathat - opened

您好,我正在嘗試使用Breeze-7B-Instruct-v1_0計算文本的困惑度,但對於model.generate()函式,其僅會回傳output token,所以我試著透過直接使用model()獲取logits值。可是當我比較兩種方法時,發現兩者所生成的文本品質有很明顯的落差,使用model.generate()的回答語句較為通順,以下是我的程式碼與輸出。

code1.png
code2.png
output.png

請問這兩種方法有何差異嗎,還是我使用方法有誤?

我只是一個路人,但根據我遠古以前(2 年前)的經驗,我記得 model() 跟 model.generate() 在考慮的 context 會不同。這是 Huggingface API 的問題
簡言之前者是 greedy decoding (類似 teacher-forcing 的概念,也因而比較快) 但後者是 auto-regressive (考慮自己生成的 token ,因此可能會比較慢),而且還支援各種 sampling 方法

這邊應該可以參考: https://discuss.huggingface.co/t/what-is-the-difference-between-forward-and-generate/10235

No description provided.
cathat changed discussion status to closed
cathat changed discussion status to open
cathat changed discussion status to closed
cathat changed discussion status to open

謝謝您抽空回答我的問題,這幫了我很大的忙。

cathat changed discussion status to closed

Sign up or log in to comment