如何使用 DSS 构建您的首个模型
by Canonical on 20 March 2025
GenAI 无处不在,它正在改变我们对待技术的方式。如果您曾想要深入大型语言模型(LLM)的世界,但是感到无从下手,那么有一个好消息!Hugging Face 最近推出了一个自定进度的课程,非常适合初学者和更有经验的爱好者。由于模型占用面积小,它可以实际操作,易于使用,并且设计为在标准硬件上工作。
当我听到这个消息时,我决定使用 Canonical 的数据科学堆栈(DSS)来尝试一下。
在这篇博客中,我将指导您设置 DSS 并运行 Hugging Face 课程的第一个笔记本。该笔记本侧重于受监督的微调,这是一种使预先训练的语言模型适应特定任务或领域的方法。在这篇帖子的结尾,您将会看到 GenAI 是多么的简单和容易理解——这将是一项用于开启新年篇章的完美新技能。
设置您的环境
在我们开始学习本课程之前,让我们先打好基础。DSS 简化并加快了数据科学环境的配置。按照本指南安装 DSS 及其依赖项仅需花费您两分钟的时间(只需安装,不要立即启动笔记本)。开始吧,我在这里等你!
备注:DSS 同时支持 Intel 和 NVIDIA GPU 服务器,所以无需担心兼容性问题。如果您有 GPU,请阅读指南以启用 GPU 支持。
(~完成设置后喝杯咖啡~)
好了!现在,您已经在机器上准备好了 DSS,让我们继续创建新的笔记本:
dss create hf-smol-course --image=jupyter/minimal-notebook
该命令将创建一个名为 hf-smol-course
的新笔记本。我使用 Jupyter 注册表中的一个最小映像,这样我们就可以从一个裸环境开始安装 Smol 课程依赖项,而不会有任何冲突。
现在,导航到您在 dss list
中看到的 url,登录到您的笔记本。
进入笔记本后,打开终端,复制 Hugging Face Smol 课程库。
备注:将您的工作存储在共享文件夹中非常重要,这样它将在重新启动后继续存在。
cd shared
git clone https://github.com/huggingface/smol-course
cd smol-course
pip install -r requirements.txt
pip install ipywidgets
由于各种 cuda 依赖项,安装要求可能需要一点时间。
备注:使用笔记本登录 Hugging Face 时,必须使用 ipywidget。
刷新浏览器以确保正确加载了小部件库。
注意从头开始设置一个支持 GPU 的 Python 环境是多么的快速和简单。通常,您会经历更多的步骤来安装 Python、虚拟环境,调整 CUDA 驱动程序,然后可能会有一个工作环境。
获取 Hugging Face 令牌
在开始之前,确保准备好 Hugging Face 令牌。如果您没有,请访问 huggingface.co,单击您的个人资料图片,然后单击访问令牌。为您的笔记本创建新的 write
token。您将在课程笔记本的开头使用此令牌登录 HF API。
这是一门自定进度的课程,现在您已经完成了环境设置,可以继续探索所有笔记本功能。让我们深入其中一个,小试牛刀。
探索受监督的微调
让我们开始操作!
进入 1_instruction_tuning
文件夹,您可以查看 README,它解释了聊天模板和受监督的微调的概念。了解模块背景知识,确保您熟悉这些技术(如果您不熟悉聊天模板,请首先阅读聊天模板笔记本)。
打开 sft_finetuning_example
笔记本,并浏览笔记本的前几个单元格。在定义一些导入之后,笔记本会在预训练之前测试基本模型,以向您展示基本模型实际上是无用的:

基本模型的输出不合理,我们需要进行微调。因此,笔记本会引导您完成数据集准备和训练。
除非您有强大的 GPU,否则我建议您调低训练参数来快速实验。您可以随时返回并设置更高的训练参数来比较结果。
在我的示例中,我设置 max_steps=300
和 eval_steps=30
。训练这个模型花费我大约 20 分钟:

上传模型是可选项。通过在 TODO
注释后添加以下代码片段,您可以在同一提示符下完成再次验证微调模型的步骤:
model = AutoModelForCausalLM.from_pretrained(
pretrained_model_name_or_path=f"./{finetune_name}"
).to(device)
outputs = model.generate(**inputs, max_new_tokens=100)
print("After training:")
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
我的输出如下所示:

这个模型开始产生一些意义,但它显然需要更多的训练。您的结果如何?
为什么 DSS 使它变得更容易
当我设置笔记本时,有一件事很明显:DSS 消除了所有常见的设置难题。有了预装的库、GPU 支持和无缝界面,我不必解决驱动程序问题或花费数小时配置依赖项。相反,我可以完全专注于学习和实验。
此外,无论何时完成实验,都可以通过以下指令取下笔记本来轻松进行清理
dss remove <notebook name>
而不留任何痕迹。
这一经历提醒我们,为什么像 DSS 这样的工具会改变行业格局。它们降低了进入门槛,让更多的人探索数据科学和 GenAI 等领域,而不会被技术挑战所困扰。
后续步骤
所以在新的一年里,给自己一份学习礼物吧。有了 DSS 和 Hugging Face 的课程,您距离掌握 GenAI 的基础只有几步之遥。谁知道呢?这可能是您进入一个迷人新领域的旅程的开始。
我将很快写下 DSS 的其他方面,例如如何利用 MLFlow 将机器学习实验提升到一个新的水平。现在,享受 2025 年的开始,在学习有关 LLM 和 GenAI 的更多知识过程中享受乐趣吧!
了解有关数据科学堆栈的更多信息:https://ubuntu.com/ai/data-science
订阅博客文章
查看更多内容
Canonical 官方构建版 OpenJDK – 正式发布
长久以来,Java 在大型企业级软件开发领域占据领军地位,90% 的《财富》500 强企业将其用于后端开发,尤其在金融、医疗及政府等关键行业。 相较于大多数开发者,Java 开发者更需要承担这样的任务:在实现新功能与满足遗留应用的安全性、稳定性和性能等关键要求之间取得平衡。管理不同的 Java 版本、安全更新及部署构件,面临极大的复杂度。 基于上述原因,我们决定加强对工具链的投入,提供一套更全面的解决方案,让企业用户和社区成员都能从中受益。Canonical 的 OpenJDK 支持方案围绕以下核心原则构建: 下面我们将针对上述各要素逐步展开深入探讨。 安全增强保障:提供长效安全保障与稳定运行支持 Ubuntu Pro 订阅服务为所有 OpenJDK LTS 构建版提供 […]
借助 Apache Spark 与 GPU 加速数据科学进程
一直以来,Apache Spark 始终以通过分区机制实现多节点分布式计算调度而著称,而 CPU 核心则始终在单个分区内完成处理任务。 鲜为人知的是,Spark 同样可通过 GPU 实现计算加速。在恰当场景中启用 GPU 加速将带来显著优势:基础设施成本与服务器需求大幅降低,查询完成速度相比传统 CPU 计算最高提升 7 倍,且所有加速过程在后台静默完成,无需改造现有 Spark 应用代码。我们激动地宣布,Canonical 团队已借助 NVIDIA RAPIDS 加速器实现 Spark 作业的 GPU 支持,此项技术突破专为破解大规模数据处理中的真实性能瓶颈而研发。 本博客将阐述 Spark 在 GPU 上所提供的优势、实现原理、GPU 的不适用场景,并为您提供如何通 […]
利用开源机器学习基础架构加速 AI 发展
人工智能技术在迅速发展,对稳健强大且可扩展的基础架构具有迫切需求。为应对这些挑战,我们精心打造了一套全面的参考架构(RA),充分利用了开源工具与尖端硬件的强大功能与性能。这套架构基于 Canonical 的 MicroK8s 和 Charmed Kubeflow 构建,运行于 Dell PowerEdge R7525 服务器之上,并借助NVIDIA NIM 微服务实现加速,为部署和管理机器学习工作负载提供了一个简便高效的途径。 为数据科学家与工程师赋能 该解决方案旨在为数据科学家和机器学习工程师赋能,使其能够实现更快迭代、无缝扩展以及强有力的安全保障。对于基础架构构建者、解决方案架构师、DevOps 工程师以及首席技术官(CTO)而言,这套参考架构提供了一条畅通无阻的途径 […]