如何使用 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
订阅博客文章
查看更多内容
预装且完全维护的数据应用程序
引入可信开源数据库容器 不要再说 “云原生还很遥远” 了。Kubernetes 刚刚庆祝了其 10 周年纪念,在最新的 CNCF 年度调查中,76% 的受访者表示他们已经在大部分或全部产品开发和部署中采用了云原生技术,例如容器。云原生并不遥远 —— 它已经到来。 数据密集型工作负载也不例外。恰恰相反,Kubernetes 专家之声 2024 年报告发现,97% 的组织在云原生平台上运行数据工作负载,72% 的数据库和 67% 的分析服务在 Kubernetes 上运行。 数据库容器正在推动可扩展性、灵活性、操作简单性和成本方面的重大改进。但是,在容器上管理这样的状态管理解决方案(通常使用多个开源组件构建)也给站点可靠性工程师、平台工程师和首席信息安全官等带来了不小的难 […]
NIS2 合规综合指南:第 1 部 — 了解 NIS2 及其范围
欧盟 NIS2 指令呼吁加强整个欧盟的网络安全,目前已在所有成员国生效。在这个由三部分组成的博客系列中,我将解释 NIS2 是什么,并帮助您了解它是否适用于贵公司,以及如何才能符合 NIS2。 在第一部分中,我将介绍 NIS2 是什么以及其与其前身 NIS 的区别和适用性,帮助您理解并判断它是否与您的公司相关。 NIS2简介 欧盟指令 2022/2555 或《网络和信息系统指令》(以下通常称为 NIS2 或欧盟 NIS2)是一项新的欧盟法规,适用于所有欧盟成员国,其目标是实现高水平的网络安全。该法规更新了 2016 年颁布的《网络和信息系统指令》(NIS 或 NIS1),并授权成员国对在欧盟地区提供关键服务的实体采用并严格执行更严格的网络安全要求。除非您的公司被视为小型/ […]
Ubuntu 全面支持 Azure Cobalt 100 虚拟机
Ubuntu 和 Ubuntu Pro 支持 Microsoft 的 Azure Cobalt 100 虚拟机(VM),由其首个内部设计的 64 位 Arm 处理器提供支持。凭借 Ubuntu 广泛的 Arm 兼容性,用户可以放心地使用这些虚拟机部署他们的工作负载。 全面的 Arm 软件包支持 Ubuntu 通过编译和测试该架构 Ubuntu 存档中超过 95% 的软件包,确保采用这些新虚拟机的用户获得无缝体验。这种广泛的兼容性使开发人员和企业能够运行他们喜欢的工具和应用程序,而无需进行任何妥协。 为多样化的工作负载做好准备 Azure Cobalt 100 虚拟机非常适合各种要求苛刻的工作负载,包括: 此外,这些虚拟机在支持 Anbox Cloud 部署方面表现出色,为 […]