🚩🚩🚩Hugging Face 實戰系列 總目錄
有任何問題歡迎在下面留言
本篇文章的代碼運行界面均在PyCharm中進行
本篇文章配套的代碼資源已經上傳
從零構建屬于自己的GPT系列1:數據預處理
從零構建屬于自己的GPT系列2:模型訓練1
從零構建屬于自己的GPT系列3:模型訓練2
從零構建屬于自己的GPT系列4:模型訓練3
從零構建屬于自己的GPT系列5:模型部署1
從零構建屬于自己的GPT系列6:模型部署2
5 writer函數
writer()實際上相當于main函數,這里是依次整個任務的運行控制都在這里,前面的那些函數都是在這里進行調用
def writer():st.markdown( """ ### 楊卓越定制化GPT生成模型 """ )st.sidebar.subheader("配置參數")generate_max_len = st.sidebar.number_input("generate_max_len", min_value=0, max_value=512, value=32, step=1)top_k = st.sidebar.slider("top_k", min_value=0, max_value=10, value=3, step=1)top_p = st.sidebar.number_input("top_p", min_value=0.0, max_value=1.0, value=0.95, step=0.01)temperature = st.sidebar.number_input("temperature", min_value=0.0, max_value=100.0, value=1.0, step=0.1)
- writer函數
- 這幾行表示的是網頁界面的標題,你可以自己更改成任意標題
- 在 Streamlit 應用程序的側邊欄中創建一個名為 “配置參數” 的子標題,通常用于告知用戶這部分側邊欄包含了一些可以配置的參數或選項
- Streamlit 包的子功能,設置一個進度條,可以進行進度條的拖拽,用戶可以自己設置生成文本最長的長度
- 創建了一個滑塊,用于選擇 top_k 的值
- 創建了一個數字輸入框,用于設置 top_p 的值
- 創建了一個數字輸入框用于調節 temperature 參數
這些參數通常用于控制文本生成過程,如控制生成文本的最大長度 (generate_max_len)、控制候選詞匯的多樣性 (top_k 和 top_p) 以及調節生成的隨機性 (temperature)。通過這些控件,用戶可以交互式地調整這些參數,從而影響模型的生成結果。
parser = argparse.ArgumentParser()
parser.add_argument('--generate_max_len', default=generate_max_len, type=int, help='生成標題的最大長度')
parser.add_argument('--top_k', default=top_k, type=float, help='解碼時保留概率最高的多少個標記')
parser.add_argument('--top_p', default=top_p, type=float, help='解碼時保留概率累加大于多少的標記')
parser.add_argument('--max_len', type=int, default=512, help='輸入模型的最大長度,要比config中n_ctx小')
parser.add_argument('--temperature', type=float, default=temperature, help='輸入模型的最大長度,要比config中n_ctx小')
args = parser.parse_args()
這些都是對應的上面那些進度條的命令行參數,先通過創建的命令行參數指定了有哪些參數,然后再經過那些進度條捕捉到命令行參數
context = st.text_area("主內容", max_chars=512)title = st.text_area("副內容", max_chars=512)if st.button("點我生成結果"):start_message = st.empty()start_message.write("自毀程序啟動中請稍等 10.9.8.7 ...")start_time = time.time()result = predict_one_sample(model, tokenizer, device, args, title, context)end_time = time.time()start_message.write("生成完成,耗時{}s".format(end_time - start_time))st.text_area("生成結果", value=result, key=None)else:st.stop()
- 輸入的文本
- 輸入的文本2,兩者區別是可以輸入兩條而已,也可以只輸入一條,不會在生成的結果中有區別對待,實際上會將兩個輸入文本連接到一起
- 一個網頁界面的按鈕,點擊開始生成結果
- 先清空之前生成的所有內容
- 清空過程中,打印的一些內容
- 記錄當前時間戳
- 通過前面的生成樣本的函數得到生成的所有文本
- 記錄結束時間戳
- 打印出生成的用時
- 展示生成結果
- 沒有點擊生成按鈕
- 就停止運行程序
6 生成效果展示
6.1 生成過程解讀
- 打開prompt,先切換到項目的盤
A:
- cd到項目地址
cd A:\GPT
- 切換到對應的python環境
activate pytorch
- 啟動網頁腳本
streamlit run app.py
- 沒有異常的話,命令行會出現下面信息
- 彈出網頁界面
- 輸入文本,點擊生成,得到生成結果
6.2 相關可手動調節參數解讀
- generate_max_len:能夠生成的文本的最大長度,最大可以設置成200
- top_k:對每一個生成詞,可以有一些多樣性
- top_p:累加概率的采樣,累加概率值,設置的大一下生成的詞多樣性會大一些
- temperature:也是如此,調整多樣性的
從零構建屬于自己的GPT系列1:數據預處理
從零構建屬于自己的GPT系列2:模型訓練1
從零構建屬于自己的GPT系列3:模型訓練2
從零構建屬于自己的GPT系列4:模型訓練3
從零構建屬于自己的GPT系列5:模型部署1
從零構建屬于自己的GPT系列6:模型部署2