LLM会产生误导性的“幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
一个典型的RAG的例子:
这里面主要包括包括三个基本步骤:
Qwen1.5版本年前开源了包括0.5B、1.8B、4B、7B、14B和72B在内的六种大小的基础和聊天模型,同时,也开源了量化模型。不仅提供了Int4和Int8的GPTQ模型,还有AWQ模型,以及GGUF量化模型。为了提升开发者体验,Qwen1.5的代码合并到HuggingFaceTransformers中,开发者现在可以直接使用transformers>=4.37.0而无需trust_remote_code。
与之前的版本相比,Qwen1.5显著提升了聊天模型与人类偏好的一致性,并且改善了它们的多语言能力。所有模型提供了统一的上下文长度支持,支持32K上下文。还有,基础语言模型的质量也有所小幅改进
Qwen1.5全系列统一具备强大的链接外部系统能力(agent/RAG/Tool-use/Code-interpreter)
正因为Qwen1.5作为中文LLM率先合入了Transformers,我们也可以使用LLaMaIndex的原生HuggingFaceLLM来加载模型。
Qwen系列模型相比同规模模型均实现了效果的显著提升。我们评测的数据集包括MMLU、C-Eval、GSM8K、MATH、HumanEval、MBPP、BBH等数据集,考察的能力包括自然语言理解、知识、数学计算和推理、代码生成、逻辑推理等。Qwen-72B在所有任务上均超越了LLaMA2-70B的性能,同时在10项任务中的7项任务中超越GPT-3.5.
测算了BF16、Int8和Int4模型在生成2048个token时的平均推理速度(tokens/s)和显存使用。结果如下所示:
下面记录7B和14B模型在单GPU使用LoRA(LoRA(emb)指的是embedding和输出层参与训练,而LoRA则不优化这部分参数)和QLoRA时处理不同长度输入的显存占用和训练速度的情况。本次评测运行于单张A100-SXM4-80GGPU,使用CUDA11.8和Pytorch2.0,并使用了flashattention2。我们统一使用batchsize为1,gradientaccumulation为8的训练配置,记录输入长度分别为256、512、1024、2048、4096和8192的显存占用(GB)和训练速度(s/iter)。我们还使用2张A100测了Qwen-7B的全参数微调。受限于显存大小,我们仅测试了256、512和1024token的性能。
对于Qwen-7B,我们额外测试了多机微调的性能。我们在两台服务器上运行评测,每台服务器包含两张A100-SXM4-80GGPU,其余配置与Qwen-7B的其他评测相同。多机微调的结果在表中以LoRA(multinode)标示。对于Qwen-72B,我们测试了两种方案:1)使用4个A100-SXM4-80GGPUs,通过Lora+DeepSpeedZeRO3微调和2)使用单张A100-SXM4-80GGPU,通过QLora(int4)微调。请注意,使用LoRA(emb)微调和不带DeepSpeedZeRO3的LoRA微调在4个A100-SXM4-80GGPUs上都会出现OOM(你可以通过将--deepspeedfinetune/ds_config_zero3.json参数传给finetune/finetune_lora_ds.sh来打开DeepSpeedZeRO3配置)。
具体数值如下所示:
LlamaIndex是一个基于LLM的应用程序的数据框架,受益于上下文增强。这种LLM系统被称为RAG系统,代表“检索增强生成”。LlamaIndex提供了必要的抽象,可以更轻松地摄取、构建和访问私有或特定领域的数据,以便将这些数据安全可靠地注入LLM中,以实现更准确的文本生成。
LlamaIndex有用性的核心是其有助于构建LLM应用程序的功能和工具。在这里,我们详细讨论它们:
LlamaIndex提供数据连接器,可以提取您现有的数据源和格式。无论是API、PDF、文档还是SQL数据库,LlamaIndex都可以与它们无缝集成,为您的LLM准备数据。
使用LLM的主要挑战之一是以易于使用的方式构建数据。LlamaIndex提供了在索引或图表中构建数据的工具。
LlamaIndex不仅仅是摄取和构建数据。它还为您的数据提供高级检索或查询界面。只需输入任何LLM输入提示,LlamaIndex将返回检索到的上下文和知识增强输出。
LlamaIndex允许与您的外部应用程序框架轻松集成。您可以将它与LangChain、Flask、Docker、ChatGPT以及您的项目可能需要的任何其他工具一起使用。
无论您的熟练程度如何,LlamaIndex都能满足您的需求。初学者用户会喜欢高级API,它允许使用LlamaIndex以仅五行代码来摄取和查询他们的数据。另一方面,高级用户可以根据需要利用较低级别的API自定义和扩展任何模块(数据连接器、索引、检索器、查询引擎、重新排名模块)。
pipinstallllama-indeximportosos.environ["OPENAI_API_KEY"]='YOUR_OPENAI_API_KEY'fromllama_indeximportGPTVectorStoreIndex,SimpleDirectoryReaderdocuments=SimpleDirectoryReader('data').load_data()index=GPTVectorStoreIndex.from_documents(documents)#oquery:query_engine=index.as_query_engine()query_engine.query("
文本表示示例,输入一个句子,输入一个固定维度的连续向量:
文本的向量表示通常可以用于文本聚类、文本相似度计算、文本向量召回等下游任务中。
在ModelScope框架上,提供输入文本(默认最长文本长度为128),即可以通过简单的Pipeline调用来使用GTE文本向量表示模型。ModelScope封装了统一的接口对外提供单句向量表示、双句文本相似度、多候选相似度计算功能
安装依赖库1
!pipinstallllama-indexllama-index-llms-huggingfaceipywidgets!pipinstalltransformers-Uimportloggingimportsyslogging.basicConfig(stream=sys.stdout,level=logging.INFO)logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))fromIPython.displayimportMarkdown,displayimporttorchfromllama_index.llms.huggingfaceimportHuggingFaceLLMfromllama_index.core.promptsimportPromptTemplatefrommodelscopeimportsnapshot_downloadfromllama_index.core.base.embeddings.baseimportBaseEmbedding,EmbeddingfromabcimportABCfromtypingimportAny,List,Optional,Dict,castfromllama_index.coreimport(VectorStoreIndex,ServiceContext,set_global_service_context,SimpleDirectoryReader,)因为Qwen本次支持了Transformers,使用HuggingFaceLLM加载模型,模型为(Qwen1.5-4B-Chat)1
embeddings=ModelScopeEmbeddings4LlamaIndex(model_id=embedding_model)service_context=ServiceContext.from_defaults(embed_model=embeddings,llm=llm)set_global_service_context(service_context)index=VectorStoreIndex.from_documents(documents)搭建基于本地知识库的问答引擎1
华为开发者空间发布
让每位开发者拥有一台云主机
在此一键设置昵称,即可参与社区互动!
*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。