1.基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学
2.高级RAG(三):llamaIndex从小到大的检索
3.在Jetson AGX Orin上体验LLaMA2
4.探讨Transformer 中的Beam search 实现
5.llama.cpp理解:跑通MiniCPM-2B版本
6.LLAMA2 介绍-第一部分
基于中文金融知识的 LLaMA 系微调模型的智能问答系统:LLaMA大模型训练微调推理等详细教学
基于 LLaMA 系基模型经过中文金融知识指令精调的微调模型,旨在提升金融领域问答效果。通过整合中文金融公开问答数据与爬取的金融问答数据,构建指令数据集,并在此基础上对 LLaMA 系模型进行指令微调。使用 GPT3.5/4.0 API 和中文金融知识图谱、allure源码CFLEB 金融数据集等扩充数据集,确保高质量训练。
安装环境时,建议使用 Python 3.9 以上版本,同时通过 lfs 方便本地下载 LLaMa 大模型。下载 LLaMA 模型时,注意选择分类为“中文金融问答微调模型”,并根据模型的不同版本和参数调整训练数据、训练序列长度等参数。
进行单模型推理和多模型对比,通过运行 infer 脚本,使用 ./instruction_data/infer.json 提供的测试用例或自定义数据集进行验证。构建数据集时,集成公开和爬取的中文金融领域问答数据,覆盖保险、理财、股票、基金、贷款、信用卡、社保等业务场景,优化数据质量和丰富性。
在微调 Finetune 阶段,按照 ./instruction_data/fin_data.json 的格式构建自定义数据集,运行 finetune 脚本进行微调。训练细节包括计算资源需求,推荐使用 A-SXM-GB 显卡,训练总轮次为 轮。根据显存大小调整 batch_size,贷款短信提醒源码预计 / 显卡(GB 显存)以上显卡可以较好支持。
在提示词模板构建模块中,包含用于 LoRA 微调 LLaMa 模型的提示模板样式,通过 JSON 文件描述模板,确保模板灵活适用于不同任务需求。现有模板包括 alpaca.json、alpaca_legacy 和 alpaca_short 等,提供通用和特定任务的提示词选择。
提示构建模块是 Prompter 类,作为模板管理器,用于构建和调整提示词以适应不同模型微调需求。项目源代码和更多优质内容可访问指定链接或关注公号“汀丶人工智能”获取资源和文章。
高级RAG(三):llamaIndex从小到大的检索
LlamaIndex是一个面向大型语言模型(LLMs)的数据处理框架,旨在简化数据整合过程,以构建应用如文档问答和数据增强聊天机器人。它提供了连接私有或领域特定数据源的能力,让开发者构建基于数据的LLMs应用。LlamaIndex是一个开源项目,其源码和文档可在GitHub上获取。
为了开始使用LlamaIndex,需安装python包并进行初始化,导入openai,gemini等大型模型API密钥。
在LlamaIndex中,加载数据通常通过使用TrafilaturaWebReader从网页中抓取信息。查看文档数量后,将数据切割成更易于管理的“节点”,这个过程类似于Langchain的文档切割,但LlamaIndex有自己的规则,如使用空格和句号作为分隔符。切割后的节点包含其ID以及与原始文档和相邻节点的关系信息,从而创建了丰富的上下文索引。
在LlamaIndex中,使用预训练的赛马开奖网源码中文Embedding模型bge-small-zh-v1来构建向量数据库。同时,可以选择不同的大型模型,如OpenAI的ChatGPT或谷歌的Gemini,以实现检索和生成文本。通过创建Index、retriever和query engine组件,可以将数据和模型连接起来,实现检索功能。
“从小到大的检索”是LlamaIndex提供的一种独特方法,它允许在切割文档时设置不同的颗粒度,比如、、字节,以生成不同大小的文档块。这些块被组织成一个递归检索器,以更快地定位与用户问题相关的信息。通过这种方式,LlamaIndex能够提供更细致和精确的检索结果。
LlamaIndex不仅提供了一种高效的数据处理和检索方法,还允许在各种模型和数据粒度之间灵活切换,以适应不同的应用需求。通过整合其文档切割、检索和模型集成功能,LlamaIndex为构建基于LLMs的复杂应用提供了强大的工具。
在Jetson AGX Orin上体验LLaMA2
探索在Jetson AGX Orin上使用LLaMA2的体验
首先,访问LLaMA2模型官网并申请新的下载链接,务必谨慎填写信息。
收到邮件后,将其暂时留存,以备后续使用。
随后,打开终端并创建conda环境(命名'llama'),安装所需python版本(Python 3.8)。
激活环境并切换至/home1/zhanghui目录,商城源码诚鑫克隆LLaMA2仓库,进入目录执行下载脚本。
输入邮箱提供的URL和模型类型(先选择7B)进行下载,文件将保存至当前目录和./llama-2-7b文件夹内。
下载完成后,使用pip安装LLaMA2代码。
在example_text_completion.py中,通过torchrun命令运行文本补全示例,指定模型目录、分词器路径、最大序列长度和最大批量大小。
查看结果,文本补全任务已经完成,生成了自然的文本延续。
尝试更换torch版本,如torch 2.1,重复上述步骤,发现结果相似。
若想在Jetson AGX Orin上编译torch,需从源码构建。
创建目录newpytorch,激活环境后,调整系统性能设置,克隆pytorch仓库,并配置环境变量。
使用pip安装所需依赖,编译pytorch,并将编译好的whl文件安装至系统。
在llama目录下运行文本补全示例,检查结果。
发现结果不完整,调整参数后,文本补全效果更佳。
尝试使用不同的saoml官网源码对话示例,通过调整dialog列表大小来优化模型性能。
为便于Jetson AGX Orin的使用,提供预编译的torch 2.0.1安装包,链接: pan.baidu.com/s/dutA5... 提取码: 9snu。
对于LLaMA2-chat对话示例,修改对话列表以适应模型处理能力。
通过调整max_seq_len和max_batch_size,以及优化dialog列表,提高对话完成的效率和质量。
探讨Transformer 中的Beam search 实现
在探索Transformer技术的过程中,我偶然接触到Llama2,并借此机会深入了解了其内部的Beam search算法是如何在generate方法中运用的。虽然网上的理论解释很多,但实际的实现方法却相对较少,所以我决定记录下这个学习过程。
Llama模型的构建是基于Transformer的PretrainedModel,而PretrainedModel又扩展自GenerationMixin,这个 mixin类为模型的generate功能提供了基础。GenerationMixin中的generate函数设计巧妙,通过判断generation_mode参数,能够进入与Beam Search相关的代码路径。
深入研究,我们主要关注的是self.beam_search方法,其代码虽然冗长,但关键部分值得我们关注。这个方法的核心在于通过迭代和概率计算,逐步生成最有可能的输出序列,以实现高效的搜索策略。
要想详细了解这个过程的每一个步骤,原始的源码提供了详尽的说明。通过实践和阅读源码,我们可以逐步理解Transformer的Beam search是如何在实际应用中发挥作用的。
llama.cpp理解:跑通MiniCPM-2B版本
源码的理解与调试是一个逐步深入的过程。以最近备受欢迎的minicpm为例,因其体积小巧,适合移动端使用,拥有丰富的资料,且效果令人满意,而且已有了llama.cpp版本。OpenBMB/MiniCPM: MiniCPM-2B:端端LLM性能优于 Llama2-B。
下载并运行llama.cpp,首先确保能正常编译,通过命令`make LLAMA_DEBUG=1`实现。
下载gguf格式的模型,提供两种格式选择:`fp`和`q4km`。创建目录`/tmp/code/pretrainmodel`并进入,使用Git LFS下载模型,可使用huggingface镜像加速下载。
模型成功下载后,运行示例代码。执行命令`./main -m /tmp/code/pretrainmodel/MiniCPM-2B-dpo-fp-gguf/MiniCPM-2B-dpo-fp-gguf.gguf --prompt "写藏头诗,藏头是龙年大吉" --temp 0.3 --top-p 0.8 --repeat-penalty 1.`。
运行时,代码执行速度较慢,可能源于代码问题或Docker运行环境的硬件限制。使用`free -m`命令查看内存使用情况,但未找到明确解释。
LLAMA2 介绍-第一部分
孟奇奎
来源:Meta
LLAMA2是Meta公司最新开源的大规模语言模型(LLMs),包含7B、B和B三个版本。其训练数据集规模达到2万亿token,具备卓越的性能与独特优势:
1. 在各种基准测试上显著超越其他开源模型,并在很多测试中达到或优于GPT4的性能
2. 允许商业应用,打破了开源模型的限制
该模型在多个领域展现出超越同级别开源模型的性能,特别是在有用性和安全性方面,经过人工评估,Llama 2-Chat甚至与某些闭源模型相比,表现相当或更优。Meta公司采取了一系列措施提升模型安全性,包括使用安全数据标注、调整模型参数以及进行红队测试,以确保模型在实际应用中的可靠性和安全性。此外,公司还提供了详细的微调方法论和改进安全性策略的描述,旨在推动社区发展更负责任、更安全的LLMs。
LLAMA2系列包括预训练和微调的模型,从亿参数的Llama 2到亿参数的Llama 2-Chat。在有用性和安全性基准测试中,Llama 2-Chat通常表现优于现有开源模型,甚至与某些闭源模型相比,表现出相当或更优的性能。这些改进和优化旨在确保模型不仅在性能上卓越,而且在实际应用中也具备高度的可靠性和安全性。
LLAMA2模型的发布面向公众,为研究和商业应用提供了新的工具。这些模型的参数量从7B、B到B不等,覆盖了广泛的使用场景。此外,Llama 2-Chat作为一种针对对话场景优化的模型,为用户提供了一种更为自然、流畅的交互体验。在部署应用前,开发人员需要进行安全测试和针对特定应用的调优,以确保模型的稳定性和安全性。
本文详细介绍了LLAMA2系列的开发过程、预训练方法、微调策略、模型安全性改进、关键观察和洞察、相关工作以及结论。模型的训练流程从大规模预训练开始,通过应用监督微调创建初始版本,随后使用人类反馈的强化学习(RLHF)进行迭代优化。预训练数据采用优化的自回归transformer,数据清洗、更新数据组合、增加训练tokens数量、扩展上下文长度以及采用分组查询注意力机制(GQA)以提高推理可扩展性,都是为了提升模型性能。
在训练过程中,使用AdamW优化器进行参数调整,采用了余弦学习率调度,优化了硬件配置(使用NVIDIA As GPU集群)以降低碳排放,并通过Meta的可持续性计划直接抵消了碳排放。分词器采用字节对编码(BPE)算法,确保模型能够准确理解文本信息。
评估结果显示,LLAMA2模型在多种学术基准测试中表现出色,与开源和闭源模型相比,Llama 2 B模型在MMLU和BBH基准测试上与GPT-3.5和GPT-4接近,而在编码基准测试上存在显著差距。在几乎所有基准测试中,Llama 2 B的表现均优于PaLM模型,并且在Llama 2 B与GPT-4和PaLM-2-L之间的性能差距较大。此外,模型还在安全性和实用性方面进行了优化,以适应商业和研究环境。
随着LLAMA2模型的开源发布,Meta旨在鼓励社区参与模型的进一步研究和应用,推动AI技术的负责任发展。通过开放模型源代码和提供详细的开发文档,Meta希望能够促进学术研究、技术创新以及行业合作,共同探索和解决AI应用中的挑战,为社会带来更多的净效益。
Open-WebUI(原Ollama_WebUI)Windows上源码安装配置记录
在探索多种LLM加速软件中,Ollama凭借其出色的速度和简洁的操作脱颖而出。发现Open-WebUI(原Ollama_WebUI)与ollama服务的配合更佳,因此决定尝试安装。Open-WebUI的GitHub地址为GitHub - open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI),其主要特点在于通过Docker快速启动,但务必注意在Docker命令中包含"-v open-webui:/app/backend/data",以防数据丢失。 对于需要利用CUDA加速的用户,官方推荐使用带或标签的ollama图像,并确保在Linux/WSL系统上安装Nvidia CUDA容器工具包。如果Ollama在本地,使用以下命令;如果在远程服务器,将OLLAMA_BASE_URL替换为服务器URL。 我的安装策略是选择源码方式,尽管文档推荐Docker。在安装过程中,我加入了国内的pip源以优化下载速度。安装完成后,需要修改.env文件中的ollama地址和backend/config.py中的相应设置。 在Linux或Windows环境下启动Open-WebUI后,可以轻松设置语言,它与ollama的集成十分顺畅。总的来说,使用Open-WebUI为LLM提供了便捷的界面,特别是配合ollama,体验良好。Elasticsearch:和 LIamaIndex 的集成
Elasticsearch与LLamaIndex集成:构建私有数据框架 LLamaIndex是一个开源的数据框架,专为LLM应用程序设计,用于处理和访问特定领域的私有数据。通过GitHub可以获取该项目的源代码以构建多样化的应用程序。 为了在Docker中设置Elasticsearch,首先,您可以参考"如何在Docker上运行Elasticsearch 8.x"的教程,启动单节点实例。使用docker-compose启动,不启用安全配置,如下所示:.env
docker-compose.yml
通过命令行启动后,Elasticsearch和Kibana就安装并运行了,但请注意,生产环境不建议使用这种配置。 在应用设计阶段,我们将使用Jupyter notebook进行。首先安装Python依赖:安装Python依赖的命令
接着创建.env文件,配置OpenAI key:.env
连接到Elasticsearch时,可以使用以下示例代码:连接Elasticsearch的代码示例
然后,加载文档并使用Elasticsearch构建VectorStoreIndex,如文档 pau_graham_essay.txt所示: 在进行基本查询和元数据过滤时,可以利用这些结构进行文本检索。例如,搜索 "weather is so beautiful" 会得到特定结果。然而,自定义过滤器和覆盖查询是Elasticsearch的高级功能,LLamaIndex目前仅支持ExactMatchFilters,其他复杂过滤器可能需要直接在Elasticsearch中使用。 想要深入了解和实践,可以访问我的GitHub项目:github.com/liu-xiao-guo/semantic_search_es,查看相关文件。 继续深入学习高级文本检索技术,如句子窗口检索,将有助于您更好地利用Elasticsearch和LLamaIndex。