generative-ai-for-beginners 实战指南理解开源大模型Llama、Mistral、Falcon并做出选型决策【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners本篇技术文章基于课程第 16 课 开源模型系统讲解开源/开放模型的准确定义与判定标准、开放模型相对专有模型的可定制性、成本与灵活性优势以及 Llama 2、Mistral、Falcon 三大开放模型家族的架构特点与衍生模型。读完后你将掌握在 Hugging Face 与 Microsoft Foundry 模型目录中筛选、对比开放模型的完整方法论并能结合本仓库配套的 Mistral 实操课 与 Meta 家族实操课 中的可运行代码样例真正动手调用这些开放模型。开源大模型为什么需要重新定义开源开源软件在技术发展的各个领域中发挥了关键作用。开源促进会Open Source InitiativeOSI定义了软件被归类为开源需要满足的 10 条标准其中最核心的一条是源代码必须在 OSI 认可的许可证下公开共享。然而大语言模型LLM的开发过程虽然与软件开发有相似之处但并不完全相同。这导致社区对LLM 语境下的开源定义产生了大量讨论。按照传统开源定义一个模型要做到完全开源以下信息都必须公开用于训练模型的数据集Datasets训练过程中的完整模型权重Full model weights as a part of the training评估代码Evaluation code微调代码Fine-tuning code完整模型权重与训练指标Full model weights and training metrics目前只有极少数模型符合这一严格标准。由艾伦人工智能研究所Allen Institute for AIAllenAI发布的OLMo就是符合该标准的代表性模型之一。正因如此本课程的行文将统一使用open models开放模型这一表述——因为许多主流模型在撰写本文时未必满足上述全部标准。理解这一术语区分很重要开放权重open-weight≠ 完全开源许可证条款、训练数据是否公开、评估与微调代码是否可审计都是选型时需要单独核实的维度。这一点也与课程第 2 课 探索与比较不同 LLM 中对open-weight / open-source / proprietary三类的划分相呼应开放权重模型可供检查、下载和定制但各家许可证并不一致有些是完全开源有些则是带使用限制的开放权重模型。开放模型的核心优势高度可定制Highly Customizable开放模型在发布时通常附带详细的训练信息研究者和开发者因此可以修改模型内部结构创建针对特定任务或研究领域的高度专业化模型。典型方向包括代码生成、数学运算和生物医学。这种可定制不只是理论优势——本仓库中大量衍生模型正是这一思路的产物课程第 16 课列举的Japanese Llama日语特化与Llama Pro基座增强版都基于 Llama 微调而来BioMistral医疗领域与OpenMath Mistral数学计算都基于 Mistral 微调而来OpenAssistant基于开放模型的助手与GPT4ALL性能高于基座都基于 Falcon 微调而来。如果你想深入理解如何自己微调一个模型可以继续阅读课程第 18 课 微调 LLM。其中讲清楚了微调fine-tuning的定位它是在提示工程prompt engineering与检索增强生成RAG都难以满足需求时的第三类手段——通过用新数据重新训练模型本身来针对特定任务改进表现同时也附带了决策清单用例、替代方案基线、成本、收益帮助你判断该不该走微调这条路。成本Cost使用与部署开放模型的单 token 成本普遍低于专有模型。在构建生成式 AI 应用时应当针对你的具体用例对开放模型做性能 vs 价格的权衡分析。下图展示了不同模型的每 token 成本对比来源Artificial Analysis灵活性Flexibility使用开放模型意味着你可以在不同模型之间自由切换或组合。一个直观的例子是 HuggingChat用户可以直接在用户界面中选择底层使用的模型无需改动任何后端代码这种模型可插拔的架构对本仓库配套课程的设计影响很大同样的ChatCompletionsClient调用骨架只需替换model_name参数即可在 Mistral、Llama、Phi 等不同家族间切换后文的代码示例会具体展示。认识三大开放模型家族Llama 2为对话场景优化的开放模型Llama 2由 Meta 开发是一个针对聊天类应用优化的开放模型。这种定位源于其微调方式——训练过程中包含了大量对话数据与人类反馈RLHF 类方法使模型输出更贴近人类预期从而提供更好的用户体验。课程列举的两个微调版本值得了解Japanese Llama日语特化版本Llama Pro对基座模型进行增强enhanced version of the base model的版本。仓库纵深本仓库的第 21 课 Meta 家族模型实战 把这条线索延续到了更新的 Llama 3.1 / 3.2并给出了可运行的代码Llama 3.1405B将上下文窗口从 8k 扩大到 128k、支持原生函数调用内置 Brave Search 与 Wolfram Alpha 工具Llama 3.2 则补上了 Llama 3.1 缺失的多模态能力11B/90B 视觉版本以及可部署到端侧的 1B/3B 纯文本版本。其多模态调用示例展示了如何在消息中同时携带文本与图片import os from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import ( SystemMessage, UserMessage, TextContentItem, ImageContentItem, ImageUrl, ImageDetailLevel, ) from azure.core.credentials import AzureKeyCredential # 从 Microsoft Foundry 项目 Overview 页面获取 token os.environ[AZURE_INFERENCE_CREDENTIAL] endpoint os.environ[AZURE_INFERENCE_ENDPOINT] model_name Llama-3.2-90B-Vision-Instruct client ChatCompletionsClient( endpointendpoint, credentialAzureKeyCredential(token), ) response client.complete( messages[ SystemMessage( contentYou are a helpful assistant that describes images in details. ), UserMessage( content[ TextContentItem(textWhats in this image?), ImageContentItem( image_urlImageUrl.load( image_filesample.jpg, image_formatjpg, detailImageDetailLevel.LOW) ), ], ), ], modelmodel_name, ) print(response.choices[0].message.content)上述代码与配套示例图片 sample.jpg 完整保存于 21-meta 课程作业 notebook展示了开放模型从纯文本对话走向原生多模态的演进路径——这正是课程开篇所说开放模型生态不断演进的具体体现。Mistral以 Mixture-of-Experts 兼顾性能与效率Mistral是一个主打高性能与高效率的开放模型。它采用Mixture-of-ExpertsMoE专家混合架构将一组专家模型组合进同一个系统根据输入内容动态选取部分专家参与计算。由于模型只处理自己擅长的输入整体计算更省、效率更高。其微调版本包括BioMistral聚焦医疗领域OpenMath MistralNVIDIA 出品聚焦数学计算。仓库纵深本仓库的第 20 课 Mistral 模型实战 系统讲解了 Mistral 家族中的Mistral Large、Mistral Small、Mistral Nemo三个型号并给出完整可运行代码例如用 Mistral Large 2 跑一个 RAG 流程pip install faiss-cpuimport requests import numpy as np import faiss import os from azure.ai.inference import ChatCompletionsClient from azure.ai.inference.models import SystemMessage, UserMessage from azure.core.credentials import AzureKeyCredential from azure.ai.inference import EmbeddingsClient # 从 Microsoft Foundry 项目 Overview 页面获取 endpoint os.environ[AZURE_INFERENCE_ENDPOINT] model_name Mistral-large token os.environ[AZURE_INFERENCE_CREDENTIAL] client ChatCompletionsClient( endpointendpoint, credentialAzureKeyCredential(token), ) # 1. 下载文档并切块 response requests.get( https://raw.githubusercontent.com/run-llama/llama_index/main/ docs/docs/examples/data/paul_graham/paul_graham_essay.txt ) text response.text chunk_size 2048 chunks [text[i:i chunk_size] for i in range(0, len(text), chunk_size)] # 2. 用多语言 embedding 模型向量化 embed_model_name cohere-embed-v3-multilingual embed_client EmbeddingsClient( endpointendpoint, credentialAzureKeyCredential(token) ) embed_response embed_client.embed(inputchunks, modelembed_model_name) text_embeddings np.array([item.embedding for item in embed_response.data]) # 3. 构建 faiss 向量索引并检索 d text_embeddings.shape[1] index faiss.IndexFlatL2(d) index.add(text_embeddings) question 저자가 대학에 오기 전에 주로 했던 두 가지 일은 무엇이었나요? question_embedding embed_client.embed( input[question], modelembed_model_name ) question_embeddings np.array(question_embedding.data[0].embedding) D, I index.search(question_embeddings.reshape(1, -1), k2) retrieved_chunks [chunks[i] for i in I.tolist()[0]] # 4. 把问题 检索到的相似块组装进提示词 prompt f Context information is below. --------------------- {retrieved_chunks} --------------------- Given the context information and not prior knowledge, answer the query. Query: {question} Answer: chat_response client.complete( messages[ SystemMessage(contentYou are a helpful assistant.), UserMessage(contentprompt), ], temperature1.0, top_p1.0, max_tokens1000, modelmodel_name ) print(chat_response.choices[0].message.content)该示例完整版本见 20-mistral 作业 notebook的价值在于它用约 50 行代码演示了开放模型 向量检索这一 RAG 完整链路其中chunk_size 2048、k2、temperature1.0、top_p1.0等参数都是可以直接按需调整的取值。第 20 课还专门对比了 Mistral Small 与 Mistral Large 在相同提示写 Fizz Buzz 函数下的延迟与响应风格差异结论是 Small 的响应时间约快 3–5 秒——这正是性能 vs 价格权衡的实测依据。此外Mistral Nemo 是家族中唯一的 Apache 2.0 许可模型采用 Tekken 分词器相比常见的 tiktoken 在多语言与代码上 token 效率更高并且是首批支持原生函数调用的开源模型之一——用mistral_common包的MistralTokenizer即可复现分词对比实验。FalconFlashAttention 带来的推理效率优势Falcon由技术创新研究所Technology Innovation InstituteTII创建。其中Falcon-40B拥有 400 亿参数在更小的计算预算下表现优于 GPT-3。其效率来源是两项关键技术的组合FlashAttention 算法Multi-Query Attention多查询注意力二者共同削减了推理时的显存占用降低了推理时间使 Falcon-40B 能够胜任聊天类应用。其微调版本包括OpenAssistant一个完全构建在开放模型之上的助手GPT4ALL性能高于 Falcon 基座的版本。如何选择合适的开放模型课程明确给出了一个务实的结论选择开放模型没有唯一答案。可行的起步路径有三条按任务筛选使用 Microsoft Foundry 模型目录的按任务过滤filter by task功能快速理解各模型是为哪类任务训练的看排行榜Hugging Face 维护的 LLM Leaderboard 按特定指标展示表现最佳的模型跨类型横评Artificial Analysis 是跨类型对比 LLM 的另一个优质资源下图为其模型质量对比截图在此基础上课程还给出两条经验法则针对具体用例搜索聚焦于相同领域的微调版本往往比直接用基座模型更有效对照上文 BioMistral、OpenMath Mistral 等例子实验验证用多个开放模型跑你自己的场景对照你和用户各自的预期来评估是行之有效的做法。这也与本仓库 19-slm 课程 的思路一致小语言模型SLM与开放大模型同样要在尺寸、理解、算力、偏差、推理速度多个维度上结合具体用例权衡。快速上手的实操路径开放模型最大的好处是可以快速上手。课程的推荐路径是打开Microsoft Foundry 模型目录其中收录了一个包含本课讨论模型的 Hugging Face 专属集合用按任务过滤缩小候选范围选定候选后复用本仓库配套课程的调用骨架——20-mistral 课 的 RAG 与延迟对比示例、21-meta 课 的函数调用与多模态示例均以azure.ai.inferenceSDK 的ChatCompletionsClient为统一入口替换model_name与环境变量AZURE_INFERENCE_ENDPOINT、AZURE_INFERENCE_CREDENTIAL即可切换不同开放模型家族如果评估后确定某个模型值得深入再进入 18 微调课 学习用自有数据定制模型或在 15 RAG 课 中完善检索链路。从源码结构看整个仓库的开放模型课程呈现清晰的分工第 16 课负责认知框架与选型方法本文覆盖的 OSI 标准、三大模型家族、成本/质量对比第 20、21 课负责型号级实操具体型号的参数、许可、上下文窗口与可运行代码第 18 课负责定制能力微调。按这条路径学习可以在不偏离主线的前提下逐步深入开放模型生态。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考