使用Meta釋出的模型,實作Chat GPT - Part 4

閱讀時間約 3 分鐘

使用Meta釋出的模型,實作Chat GPT - Part 3中我們已經建立好大型語言模型遇到哪些「字串」要停止輸出的列表,現在我們將它製作成一個物件,對應程式如下:

from transformers import StoppingCriteria, StoppingCriteriaList

class StopOnTokens(StoppingCriteria):
def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
for stop_ids in Stop_Token_IDs:
if torch.eq(input_ids[0][-len(stop_ids):], stop_ids).all():
return True
return False

stopping_criteria = StoppingCriteriaList([StopOnTokens()])

輸入好之後會長這樣,我們一樣按下「紅色框框」處來執行,大約一秒後,執行完成,「紅色框框」處會有綠色提示 (0秒處)

raw-image

有了所有關鍵組件之後,我們應用Transformer中的Pipeline功能將所有元件串起來:

HuggingFace登入參照:使用Meta釋出的模型,實作Chat GPT - Part 2

Model的部分參照:使用Meta釋出的模型,實作Chat GPT - Part 3

Tokenizer的部分參照:使用Meta釋出的模型,實作Chat GPT - Part 3

Stopping Criteria的部分參照:使用Meta釋出的模型,實作Chat GPT - Part 3

對應程式碼如下:

Generate_Text = transformers.pipeline(
model = Model,
tokenizer = Tokenizer,
return_full_text = True,
task = 'text-generation',
stopping_criteria = stopping_criteria,
temperature = 0.1,
max_new_tokens = 512, # Max Number of Tokens to Generate in the Output
repetition_penalty = 1.1)

然後就可以要求這個模型產生我需要的輸出了,我問它什麼是1688,並要求它回答,對應程式如下:

Result = Generate_Text("Whis is 1688 ?")
print(Result[0]['generated_text'])

這部分輸入好之後會長這樣,我們一樣按下「紅色框框」處來執行,大約一分鐘後,執行完成,「紅色框框」處會有綠色提示 (46秒處)

raw-image

結果如下它回我有關威士忌的文字,截圖如下:

raw-image

可以想見這不是我要的回應,於是想到ChatGPT回答不是你要的怎麼辦?裡面提到的RAG技術,之後我們來探討怎麼樣改正模型,能讓這個語言模型回答我要的東西。

3會員
29內容數
這裡將提供: AI、Machine Learning、Deep Learning、Reinforcement Learning、Probabilistic Graphical Model的讀書筆記與演算法介紹,一起在未來AI的世界擁抱AI技術,不BI。同時分享各種網路賺錢方法,包含實測結果
留言0
查看全部
發表第一個留言支持創作者!