微软生成式 AI 入门课第 16 课的开源模型:给的是尺子不是清单
有人问过我一个很实际的问题:领导说”开源模型便宜,我们自己部署一套”,这话该怎么接。我把 generative-ai-for-beginners 的第 16 课翻出来对照着看,发现这一课最有用的部分,恰恰不是它列的那几个模型——它是没有代码目录的一课,16-open-source-models/ 下面只有 README.md 和一个 images/ 目录,正文里那些具体模型的小节,写作时间摆在那儿,拿它当今天的选型依据是不合适的。
真正能带走的是两样东西:一把判断”这算不算开源”的尺子,和一条从课程配置文件通到实际调用的接入路径。下面按这两条走。
课程把”开源模型”这个词换掉了
第 16 课的 ## What are Open Source Models? 一节做了一件容易被读过去的事:它先引用 Open Source Initiative(OSI)对开源软件的判定标准,然后指出训练一个模型和开发一款软件不是一回事,接着给出一份”要对齐传统开源定义、应当公开哪些信息”的清单:
- 训练用的数据集
- 训练所得的完整模型权重
- 评测代码
- 微调代码
- 完整模型权重与训练指标
这份清单我建议你自己去 README 里再看一眼原文,因为它有一处值得注意的地方:第二条和第五条都落在 full model weights 上,第五条只是多带了 training metrics。仓库文档没有解释这两条为什么分开列,我也不替作者猜——但这提示你,这份清单是一份行文中的说明,不是一份可以拿去逐项打勾的合规表。
紧接着课程写了一句关键的话:符合上述标准的模型目前只有少数几个,正文举的例子是 AllenAI 的 OLMo;并且本课后文一律改称 “open models” 而不是 “open source models”。这个术语上的退让,比清单本身更值得你带到工作里去——当有人跟你说”我们用开源模型”,先问清楚他说的是权重可下载,还是数据、评测、微调链路都公开。第 2 课 02-exploring-and-comparing-different-llms/README.md 的 ### Open-Weight/Open-Source versus Proprietary Models 一节把这层讲得更细,它明确写了 open-source 与 open-weight 的许可条件不同,有些是带使用限制的 open-weight 模型,团队在投产前仍要审查许可条款、服务成本、维护、安全更新与评测质量。
课程给的评估角度,一共就那么几处
第 16 课的 ## Benefits of Open Models 给了三个角度,用词分别是 Highly Customizable、Cost、Flexibility:
可定制——因为随模型一起发布的还有训练相关的信息,研究者和开发者可以改模型内部,做出针对特定任务的专门化版本,正文举的方向是代码生成、数学运算和生物学。
成本——正文说这类模型每 token 的使用与部署成本低于专有模型,并配了一张图,图下方标注 Source: Artificial Analysis。这里要留个心眼:这是一张外部第三方的行情图,价格是最经不起放的东西,你今天看到的数值明天就可能不一样。课程自己也把话说在前面了:在你自己的用例上看 performance vs price,而不是直接采信结论。
灵活——指的是可以换模型、可以组合模型,正文举的例子是 HuggingChat Assistants 里用户能在界面上直接选用哪个模型。
到了 ## How to Choose,课程给的是三个入口而不是一个答案,原文第一句就是”没有唯一答案”:
- 先用 Microsoft Foundry 模型目录的 filter by task(按任务过滤)看这个模型是为什么任务训练的;
- Hugging Face 维护的 LLM Leaderboard,按某些指标看表现;
- 跨类型比较时用 Artificial Analysis 这个站点。
后面还补了两条做法:如果你有明确用例,去找同一领域的 fine-tuned 版本;以及拿多个开放模型按你和你的用户的期望去试。
我的看法是,这三个入口里对工程落地最有价值的是第一个——按任务过滤,因为它对应的是模型卡上写明的 intended use。第 2 课的 ## How to test and iterate with different models to understand performance on Azure 一节把目录能干的事列得更全(按任务、提供方、许可、部署方式、名称过滤,看模型卡,看 Model Benchmarks 面板,微调,部署到推理端点),并且带了一条 NOTE:并非目录里所有模型都支持微调和按量付费部署,以模型卡为准。榜单和第三方对比站点属于第二顺位的参考,它们的数值都在变,我不建议把任何一个具体名次写进你的技术方案。
至于微调,第 16 课只是提了一句,正文明确把详细内容指向了第 18 课 18-fine-tuning/README.md。
获取与部署:路径在 03-providers.md,不在第 16 课
第 16 课的 ## Next Steps 只把你指向 Microsoft Foundry 的模型目录,说那里有一个 Hugging Face 的集合。真正的接入配置在 00-course-setup/03-providers.md,这份文件才是你要打开的那个。
它把课程支持的 provider 和作业文件名上的标签对应起来,写得很直白:aoai 需要 Azure OpenAI 的 endpoint 和 key,oai 需要 OpenAI 的,hf 需要 Hugging Face token。第四个标签 githubmodels 是最容易踩的一处:它的名字和实际要配的东西已经对不上了。 同一份文件里逐字写着,GitHub Models 将于 2026 年 7 月底退役,直接替代者是 Microsoft Foundry Models;00-course-setup/02-setup-local.md 和 00-course-setup/README.md 的提示框里还额外点名了 GITHUB_TOKEN 这个变量一并退役。按仓库文档给出的这个时间点算,今天已经在它之后了。所以看到 githubmodels- 前缀的文件,不要去找 GitHub 的 token——按 03-providers.md 的说明,这条路线实际要配的是 Foundry 项目 Overview 页上的 endpoint 与 API key,落到 .env.copy 里就是这两个变量:
## Microsoft Foundry Models (multi-provider model catalog, replaces GitHub Models, which retires end of July 2026)
AZURE_INFERENCE_ENDPOINT='<add your Microsoft Foundry project endpoint here>'
AZURE_INFERENCE_CREDENTIAL='<add your Microsoft Foundry Models API key here>'
以上原样取自 00-course-setup/03-providers.md 里转录的 .env.copy 片段(仓库根目录那份 .env.copy 的同名变量还多带了示例端点与说明注释,以仓库最新内容为准)。占位符请替换成你自己的值,文档里说明 .env 是被 gitignore 的。
代码这一侧也已经改过来了。06-text-generation-apps/python/githubmodels-app.py 里用的是 azure.ai.inference 的 ChatCompletionsClient,读的是 AZURE_INFERENCE_CREDENTIAL 和 AZURE_INFERENCE_ENDPOINT,文件顶部的注释写明”从你的 Microsoft Foundry 项目 Overview 页取这些值”。同一个文件在 client.complete(...) 的调用里还留了一行注释,说 gpt-5 这类 reasoning 模型不接受 temperature / top_p,让它们保持默认。这条对写代码的人很要紧:别把老示例里的采样参数当成通用写法照搬。
想完全离线的话,03-providers.md 末尾的 ## Offline / Local Providers 给了两条:Foundry Local 和 Ollama,并说 Foundry Local 会自动选择可用的执行提供方(NPU、GPU 或 CPU)并暴露一个 OpenAI 兼容端点,因此课程里大部分示例代码只要小改就能指过去。安装命令文档里是分平台给的:
winget install Microsoft.FoundryLocal
Windows 侧就是上面这一条;macOS 侧文档给的是 brew install microsoft/foundrylocal/foundrylocal。第 19 课 19-slm/README.md 的 Foundry Local 小节接着给了跑模型和用 SDK 的写法,foundry model run phi-3.5-mini 之后是:
from foundry_local import FoundryLocalManager
manager = FoundryLocalManager("phi-3.5-mini")
print(manager.endpoint, manager.api_key)
以上片段原样取自 19-slm/README.md,其中的模型名是仓库里的示例值。Ollama 那条路径同一份文档里给的是 ollama run phi3.5。
如果你要的是把权重直接拉下来自己跑,课程里最接近的样例是 19-slm/python/phi35-instruct-demo.ipynb:它用 transformers 的 AutoModelForCausalLM.from_pretrained 与 AutoTokenizer.from_pretrained 加载本地目录,再用 pipeline("text-generation", model=model, tokenizer=tokenizer) 生成。这个 notebook 里有一处值得你自己确认:它的 generation_args 同时给了 do_sample 与 temperature 两个字段,这两者在 transformers 里的相互关系仓库文档没有解释,以该库自己的文档为准。这里也顺带说明了前面那条注释的边界——本地 transformers 管线上的采样参数,和云端 reasoning 模型不接受 temperature 是两码事,别把两边的经验混着用。
边界
- 第 16 课本身不含代码,它给的是判断框架;要动手,入口是
00-course-setup/03-providers.md,示例在第 19 课。 - 正文中的成本图与榜单来自外部站点,属于会变的行情信息,不适合写进方案。
- 课程正文里点名的模型和推荐部署名都是写作当时的示例,仓库持续更新,以最新内容为准。
- 云端路径会调用外部服务、产生费用,也可能把你的输入送出去;本地路径不需要订阅与网络,但硬件、服务与运维成本落在你自己头上,第 2 课的
### Service versus Model一节把这层区别写得很清楚。
回到开头那个问题。“开源模型便宜”这句话,按第 16 课的框架拆开是三件事:它是不是真的对你的任务训练过(filter by task)、它的许可允许你怎么用(第 2 课那段)、以及你打算走托管端点还是自己扛推理(03-providers.md 的云端与离线两条路)。这三件事回答完,价格才有讨论的余地。
本文依据 github.com/microsoft/generative-ai-for-beginners 仓库于 2026-08-18 的公开内容整理,
事实来自仓库内的课程正文与代码示例。我们没有跑过文中涉及的代码,
因此不涉及运行结果、耗时与生成质量的任何描述。
该课程持续更新,文中涉及的文件路径、依赖与接口写法随版本变动,请以仓库最新内容为准。
文中涉及的云端服务调用会产生费用并可能上传数据,请自行评估密钥与数据边界。
许可条款请以仓库 LICENSE 原文与你所在组织的要求为准,本文不构成法律意见。 安全与合规相关做法请结合自身环境评估,本文不构成安全方案建议。