🚩🚩🚩Hugging Face 实战系列 总目录
有任何问题欢迎在下面留言
本篇文章的代码运行界面均在PyCharm中进行
本篇文章配套的代码资源已经上传
从零构建属于自己的GPT系列1:数据预处理
从零构建属于自己的GPT系列2:模型训练1
从零构建属于自己的GPT系列3:模型训练2
从零构建属于自己的GPT系列4:模型训练3
从零构建属于自己的GPT系列5:模型部署1
从零构建属于自己的GPT系列6:模型部署2
5 writer函数
writer()实际上相当于main函数,这里是依次整个任务的运行控制都在这里,前面的那些函数都是在这里进行调用
python
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)。通过这些控件,用户可以交互式地调整这些参数,从而影响模型的生成结果。
python
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()
这些都是对应的上面那些进度条的命令行参数,先通过创建的命令行参数指定了有哪些参数,然后再经过那些进度条捕捉到命令行参数
python
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,先切换到项目的盘
python
A:
- cd到项目地址
python
cd A:\GPT
- 切换到对应的python环境
python
activate pytorch
- 启动网页脚本
python
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