从零构建属于自己的GPT系列6:模型本地化部署2(文本生成函数解读、模型本地化部署、文本生成文本网页展示、代码逐行解读)

🚩🚩🚩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)

    
  1. writer函数
  2. 这几行表示的是网页界面的标题,你可以自己更改成任意标题
  3. 在 Streamlit 应用程序的侧边栏中创建一个名为 "配置参数" 的子标题,通常用于告知用户这部分侧边栏包含了一些可以配置的参数或选项
  4. Streamlit 包的子功能,设置一个进度条,可以进行进度条的拖拽,用户可以自己设置生成文本最长的长度
  5. 创建了一个滑块,用于选择 top_k 的值
  6. 创建了一个数字输入框,用于设置 top_p 的值
  7. 创建了一个数字输入框用于调节 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()
  1. 输入的文本
  2. 输入的文本2,两者区别是可以输入两条而已,也可以只输入一条,不会在生成的结果中有区别对待,实际上会将两个输入文本连接到一起
  3. 一个网页界面的按钮,点击开始生成结果
  4. 先清空之前生成的所有内容
  5. 清空过程中,打印的一些内容
  6. 记录当前时间戳
  7. 通过前面的生成样本的函数得到生成的所有文本
  8. 记录结束时间戳
  9. 打印出生成的用时
  10. 展示生成结果
  11. 没有点击生成按钮
  12. 就停止运行程序

6 生成效果展示

6.1 生成过程解读

  1. 打开prompt,先切换到项目的盘
python 复制代码
A:
  1. cd到项目地址
python 复制代码
cd A:\GPT
  1. 切换到对应的python环境
python 复制代码
activate pytorch
  1. 启动网页脚本
python 复制代码
streamlit run app.py
  1. 没有异常的话,命令行会出现下面信息
  2. 弹出网页界面
  3. 输入文本,点击生成,得到生成结果

6.2 相关可手动调节参数解读

  1. generate_max_len:能够生成的文本的最大长度,最大可以设置成200
  2. top_k:对每一个生成词,可以有一些多样性
  3. top_p:累加概率的采样,累加概率值,设置的大一下生成的词多样性会大一些
  4. temperature:也是如此,调整多样性的

从零构建属于自己的GPT系列1:数据预处理
从零构建属于自己的GPT系列2:模型训练1
从零构建属于自己的GPT系列3:模型训练2
从零构建属于自己的GPT系列4:模型训练3
从零构建属于自己的GPT系列5:模型部署1
从零构建属于自己的GPT系列6:模型部署2

相关推荐
deephub24 分钟前
优化注意力层提升 Transformer 模型效率:通过改进注意力机制降低机器学习成本
人工智能·深度学习·transformer·大语言模型·注意力机制
搏博36 分钟前
神经网络问题之二:梯度爆炸(Gradient Explosion)
人工智能·深度学习·神经网络
不高明的骗子1 小时前
【深度学习之一】2024最新pytorch+cuda+cudnn下载安装搭建开发环境
人工智能·pytorch·深度学习·cuda
搏博1 小时前
神经网络问题之:梯度不稳定
人工智能·深度学习·神经网络
Sxiaocai1 小时前
使用 PyTorch 实现并训练 VGGNet 用于 MNIST 分类
pytorch·深度学习·分类
狸克先生1 小时前
如何用AI写小说(二):Gradio 超简单的网页前端交互
前端·人工智能·chatgpt·交互
机智的小神仙儿2 小时前
GPT-1.0、GPT-2.0、GPT-3.0参数对比
gpt·语言模型·gpt-3
Landy_Jay2 小时前
深度学习:GPT-1的MindSpore实践
人工智能·gpt·深度学习
白光白光3 小时前
量子神经网络
人工智能·深度学习·神经网络
新加坡内哥谈技术4 小时前
Mistral推出“Le Chat”,对标ChatGPT
人工智能·chatgpt