利用通义灵码和魔搭 Notebook 环境快速搭建一个 AIGC 应用 | 视频课

作者:高铭健|魔搭社区技术运营

大家好,今天我将分享如何利用通义灵码和魔搭的 Notebook 环境快速搭建一个 AIGC 应用。

首先,我们讨论 AIGC 应用的需求及其设计挑战。当前,为何我们需要 AIGC 应用呢?AIGC 是一种利用视觉大模型生成文字、图片和视频等内容的应用,它显著缩短了内容创作的时间。例如,企业能够迅速生成营销文案和广告素材以应对市场变化或特定需求。

对企业及个人而言,AIGC 的最大优势在于其能够提供个性化精准的内容生成。这与使用特定工具或网页端的大模型调用不同,我们自己开发的 AIGC 应用能够提供更加个性化、风格化的内容生成。

在运行上,我们可以在本地运行 AIGC 应用,即将大模型下载至本地,以优化整个生成流程,减少 API 调用。生成的内容不受任何限制,同时还能保护用户数据隐私。最后,AIGC 能够结合数据生成新颖独特的创意,为创作者提供灵感来源,通过调整参数或关键词探索不同的创意方向,从而提高创作效率和多样性。

接下来讨论的是 AIGC 开发中遇到的挑战,首先是前后端联调的复杂性。在开发 AIGC 应用时,需要同时考虑前端界面和后端逻辑,并确保它们的匹配。此外,还需要保证各个模块和大模型推理验证的准确性。如果由个人单独编写,可能会遇到许多问题,需要针对多个文件进行反复的调整,以达到匹配。

在硬件环境和配置方面,AIGC 模型,如 Diffusion 等,高度依赖高性能 GPU 和大容量显存以运行。此外,它们还依赖特定的框架和库的特定版本。不同的开发环境,无论是本地运行还是在云服务器上运行,配置差异可能导致本地可以运行的模型,在服务器上却无法运行,或者在本地运行时出现版本错误等问题。

在扩展功能时,针对现有的代码框架进行扩展,会涉及到多个模块的代码修改。这在个人或团队开发中可能导致复杂性增加。然而,借助通义灵码的多文件修改和全局思考能力,这部分问题可以得到有效解决。

接下来讨论的是通义灵码和魔搭 Notebook 环境在 AIGC 应用开发中的优势。首先,我们简要介绍通义灵码和 Notebook。通义灵码目前支持多文件同时修改及工具使用能力,能够与开发者协作完成编码任务,如基本代码生成、需求实现、问题解决,以及复杂的单元测试和批量代码修改等。

魔搭提供的 Notebook 环境是一种交互式编程环境,适用于不同技术水平的 AI 开发者。无论你是编程初学者还是高级程序员,都可以利用这个 Notebook 环境进行开发。Notebook 通过与阿里云 DSW 和弹性加速计算实例的合作,提供了开箱即用的免费算力,用户可以无缝地连接和使用这些计算资源,包括 GPU。

目前,Notebook 已经内置了完整的通义灵码支持。只需打开 Notebook,选择通义灵码(左下角的小标志),登录个人账号,即可使用通义灵码进行代码开发。

那么,通义灵码与 Notebook 的结合在 AIGC 应用开发中有哪些优势呢?

首先,通义灵码具备高效的开发和代码生成能力。它能够提供智能代码补全及自动生成功能。例如,在开发过程中,当我们需要添加一系列模型时,只需输入第一个模型,通义灵码就能自动完成后续模型的添加,大大简化了操作流程。

此外,它还支持单元测试的自动化。在开发 AIGC 应用时,由于需要调用大量大模型,如果直接将模型调用集成到应用框架中,可能会遇到运行不畅或无法加载图片等问题,难以定位具体故障点。因此,在将模型调用部分集成到代码框架之前,使用通义灵码进行自动化测试是十分必要的,这样可以快速解决潜在问题。

第二个优势是无缝集成和开发。首先是模型调用代码的获取。我们知道在调用一个大模型的时候,它有一些配套的快速启动或者特定参数的调用代码。这个代码的获取,我们可以在 Notebook 中直接点击我们想要的大模型,就可以找到调用它的代码,非常方便。

此外,在 Notebook 环境中存在大量关于大模型开发的文档。我们可以结合这些文档内容,例如通过通义灵码进行提问,让其给出更精准且易于理解的回答。通过构建思考链的方式,可以提升通义灵码在生成代码方面的准确性。这不仅仅是简单地要求它完成任务,而是基于相应的文档及其思考过程。

第三个优势是交互式开发与快速迭代。Notebook 主要提供的就是一个灵活的验证环境,使得我们可以在代码开发的不同阶段,在 Notebook 环境中进行快速验证。由于其背后高性能 GPU 资源的支持, Notebook 的运行速度相对较快,大大减少了验证时间。

在本地电脑上进行验证时,比如验证一个模型的推理是否成功,可能需要等待较长时间,但在 Notebook 上可以显著缩短这一时间。同样,我们也可以实现代码与文档的一体化。通过在通义灵码生成代码后,可以自动生成相应的代码文档。在 Notebook 中,我们可以通过一键转发或分享功能,方便整个团队进行协作。

此外,低代码门槛和创作效率也是其优势之一。利用通义灵码的功能,我们可以将自然语言转化为代码,这使得那些对编程不甚熟悉的人也能方便地参与应用开发。在开发过程中,我们还可以实现团队协作和知识共享。通过 Notebook 环境,我们能够轻松实现代码的一键分享和共同阅读等功能,从而提升我们的协作效率。

接下来,我们将详细介绍我们的开发流程。首先,我将概述 AIGC 应用开发的总体流程,该流程主要分为几个关键步骤。首先是编写代码框架,我们需要提供清晰、完整的代码框架描述给通用领域模型。如果你不熟悉编写这种代码框架,也无需提问,这种代码框架通常包括哪些部分?在完成编码后,我们进行验证,对应用界面进行验证。我们可以运行由通义灵码生成的代码界面,以检查各个组件的显示是否正确。

在确保应用界面没有问题后,我们便可以进行模型调用的测试。我们可以通过通义灵码的测试单元生成功能,来检测模型调用是否能够正常运行。当模型能够正常调用后,我们就可以在之前的代码框架中添加具体的功能逻辑。在此过程中,我们需要清晰地提供功能逻辑给通义灵码。最好是在添加一些模型调用的示例代码,以使其明白具体的参数是什么样的。

在功能逻辑添加完成后,我们可以通过运行当前代码来测试整个运行流程的正确性以及各个功能是否正常运行。在确保基础功能无误后,我们可以进一步优化界面和具体功能,对现有框架进行优化,包括扩展功能和美化界面等。

接下来,我们将详细探讨每一步的操作方法。

首先,如何启动 Notebook 中的通义灵码呢?我们需要在魔搭社区中点击"我的 Notebook",并选择 GPU 环境来启动。

在我的主页上已经选择了 Notebook,并点击启动后,我们就可以查看 Notebook 的简介。在快速开始的页面中,可以看到终端、工具、ModelScope 模型库以及文档中心。我们可以通过点击进入,直接查看所需的模型。点击模型后,可以了解使用该模型的具体流程介绍,并能进行运行。

接着,我们可以在 Notebook 中启动通义灵码。首先,找到右上角的 web IDE 按钮并点击,这将打开 VS code 编程界面。然后,在左下角找到并点击通义灵码。这时,我们需要在右上角进行登录,输入自己的账号和名称。这些信息可以从阿里云的个人账号中一键获取。我已经完成登录,现在选择 AI 程序员功能,即可对代码文件进行修改和代码生成。

成功启动 Notebook 中的通义灵码后,我们便可以对其进行开发。 首先,我们需要编写代码框架提示词,这主要包括以下关键部分。

首先,我们的任务目标是开发一个AIGC 应用。我们选择首先选择一个代码框架,我们这里使用 gradio 框架。gradio 是一种前后端整合的代码框架,它能够避免我们再编写 HTML、CSS 等前端技术。它可以直接基于 Python 创建一个 web 界面,从而实现更高效、更快速的开发。因此,我的任务是开发一个基于 gradio 框架的应用,该应用将包含文生图、图生图、文生视频这三个功能,这涵盖了 AIGC 的核心功能。

我们可以指导用户如何使用文生图功能,即通过输入文本并调用大型模型生成图片。然而,仅提供功能描述是不够的,我们还需要对其进行更细致的说明,即设定输入和输出的要求。例如,我们可以要求用户通过下拉菜单选择不同的模型,并允许输入参数,不输入时使用默认参数。这些参数包括生成图片的高度和宽度等。我们将这些参数的要求传达给通义灵码。此外,我们还可以告诉他具体的调用大模型的代码暂时保持空缺,仅仅生成代码框架。这是因为如果我们直接告诉他这些功能,它会为我们生成整个代码,这可能会导致错误,因为它对大模型调用的具体流程还不甚了解。

接下来,我将展示我们代码框架的提示词及其对应的效果。左侧文本为提示词,包括任务目标、功能描述、输入输出参数以及其它要求。

在 Notebook 中,首先新建一个文件。在该文件界面中,选择通义灵码并粘贴提示词到输入框中。同时,可以选择模型,我选择的是 QWQ+ 模型以提供更深入的思考。通义灵码在接收到 QWQ 模型的指令后,会进行深度思考。

生成过程结束后,通义灵码会向我们汇报它对代码文件所做的主要修改,包括新增功能及每个功能模块的具体内容。我们可以在右侧查看到原始文件和生成后的文件对比。原始文件原本是空的,生成后则包含了通义灵码为我们自动生成的代码。我们可选择接受这些修改,从而完成代码的更新。可以看到,它很好地理解了我们的需求,并帮我们生成了这样一个清晰的界面。

下一步,我们将具体运行这个文件,查看当前的运行效果。我们使用 Python 命令行将文件目录粘贴在这里并运行。

如果在运行过程中出现错误,我们可以立即把错误反馈给通义灵码,让它继续给我们修改。由于这次修改已经结束,我们点击接受以保存这些修改。重新运行刚才的代码后,我们将得到一个本地网址。使用 VS Code 打开这个网址,用浏览器打开后,即可看到我们刚才创建的 gradio 界面。

当前界面提供了三种功能:文生图、图生图和文生视频。用户可以自定义参数以生成图像。然而,由于我们尚未完善具体的逻辑,目前无法使用这些功能,仅提供了简单的前端界面。

下一步是测试模型调用,即添加具体功能。我们选择魔搭推出的模型库作为调用接口,该库整合了 AIGC 大模型的调用,极大地方便了我们的使用。

我们可以通过点击库文件来了解这个功能,并且它还提供了快速启动指南和示例代码。我们需要关注的重点就是这些代码。接下来,我们将这些代码交给通义灵码,以便将其整合入我们的代码逻辑。

下一步,我们将通过通义灵码的单元测试,分别测试文生图、图生图以及文生视频的模型调用功能。具体代码均可在相关库文件中找到,我已提前下载至个人文件夹。

我们可随意选取一个文件作为示例进行测试。例如,使用 SDXL 模型的文生图示例代码,我们可以通过调用通义灵码的单元测试功能进行测试。我们选择测试功能对它进行测试。

点击测试后,通义灵码会自动生成测试代码,即本例中的代码段。我们稍等一下,生成成功后,将其复制并粘贴到我们的代码中进行测试。具体的测试步骤不在此详细说明,重点在于了解它会进行一种简单的测试。

在成功测试模型调用之后,我们已经确保了模型调用的正常运行。下一步是向刚才的代码框架中添加功能逻辑。这里的提示词是让它使用特定的代码框架来完成。例如,对于我们的文生图功能部分,这段代码是库文件中快速启动的代码。

我们将其复制到通义灵码的 AI 程序员中。首先回到主代码框架,将提示词复制到这里,应该选择 AI 程序员。经过通义灵码的思考,它已经为我们做出了具体的修改。我们查看对应的代码,确认无误后点击接受,代码即被修改。

现在,我们将运行之前构建的代码框架。我们找到指定的文件路径,并对它进行运行。运行后,我们打开本地网址。在选择某一模型后,输入提示词,例如:"A cute cat 一只可爱的小猫",同时输入负面提示词,例如:"low quality",即低质量。

我们将推理步数设置为 20 步,以加快得出结果的速度,然后点击生成图像。现在,程序将运行文生图部分,生成图像。同时,我们也可以在命令行中观察到生成图像的流程。

好的,20 步现已全部加载完成,我们至此结束本次演示。现在,我们可以看到文生图功能已基本实现。通过修改各种参数并点击生成图像按钮,即可得到所需的图像。这便是我们对运行流程进行的测试。

通过刚才的测试,我们可以确认基本功能已经正确实现。因此,下一步我们将对这些功能进行优化。例如,我们可以为文生图模型添加 Lora 风格,也就是对基础模型进行微调,以生成具有更个性化风格的图片。我们可以通过添加特定提示词,如"添加 Lora 模型",来增强生成图像的个性化程度和独特风格。然后,将默认模型与添加 lower 模型后生成的图片进行对比展示,结果如右图所示。

我们的 prompt 是加载文生图模型。具体而言,加载 Lora 模型的代码可以轻松找到。加载代码后,我们对其进行了功能说明:点击生成图片后,页面将展示两列图片,分别是未加载 Lora 生成的图片和加载 Lora 之后生成的图片。我们把这段内容返回到刚才的通义灵码中,经过通义灵码的思考和分析,给出了具体的修改建议,并对这些修改进行了详细的描述。我们确认修改后,即可点击接受。

我们现在运行当前的代码。打开 gradio 界面,可以看到原来生成图像的下方仅有一个结果图片框。经过我们刚才的功能添加,现在可以对比原图与添加了 lora 效果的图片。同样地,我们输入提示词和负向提示词,将推理部署修改为 20 以加快速度,然后生成图像。

同样,我们可以在下方命令行中观察到流程的运行情况。上面这个流程框是原始图像的进度条,而下面则是加载了 Lora 模型后的进度条。回到之前的界面,可以看到这两张图片在风格上存在一定的差异。这表明,我们成功地将功能添加到了正确的位置。

在优化界面过程中,可能会遇到结果不符合预期的情况。这时,我们可以利用通义灵码的快照功能,恢复到之前的代码版本。在前端界面设计或前后端联调过程中,由于需要频繁调整界面样式,快照功能显得尤为重要,它能够帮助我们避免陷入越改越乱的困境。

例如,我们将简单演示如何使用此功能优化界面样式。好的,通义灵码对我们的代码进行了界面优化,包括新增了一些布局优化和 CSS 样式。运行代码后,我们发现出现了一些错误,例如,它提示"buttom"没有应用到这个元组。

遇到这种情况,若我们希望回退到之前的版本,不希望它为我们添加这样的代码,我们可以选择快照。比如我们选择快照 4,即刚才未进行优化的版本,进行切换后,就可以恢复到之前的代码版本。

现在,我们的系统正在正常运行,已经能够执行我们之前的代码。此时,我们可以指示系统对特定的描述进行修改,同时避免之前出现的问题。这正体现了我们应充分利用快照功能的智慧。

最后,让我们对刚才的开发流程进行总结。我们首先开发的是 AIGC 应用。在视觉生成领域,当前的大模型已经能够提供高质量且稳定的生成内容。因此,AIGC 应用正逐渐在更多行业和领域中得到应用,发挥更大作用。

在本次分享中,我们主要介绍了两个关键工具:通义灵码和魔搭 Notebook。通义灵码,作为 AIGC 应用开发的核心,提供了强大的代码生成和辅助开发能力,也就是它提供了强大的思考能力,使编程门槛进一步降低。我们只需拥有想法和功能描述,即可得到相应的代码开发所需应用。至于魔搭 Notebook,它作为 AIGC 应用的躯干,提供了强大的硬件资源及集成的大模型开发环境,使我们的 AIGC 应用能够在该环境中运行。

回顾我们的开发流程,从初始化的代码框架搭建,到模型的选择,再到最后的优化,每一步骤均基于通义灵码的生成能力进行操作。这一部分的目标需要由人类明确设定,以便为通义灵码提供清晰的要求,从而获得更优效果。最后,当我们熟悉了通义灵码的使用以及 Notebook 的环境后,大家可以共同探索 AIGC 的应用的更多玩法。

相关推荐
AKAMAI2 小时前
迎难而上驾驭Kubernetes
云原生·kubernetes·云计算
玄明Hanko2 小时前
从厨房到云端:从预制菜到云原生
云原生
东风微鸣3 小时前
向商界大佬一样管理技术工作 - 以团队换将+技术重构为例
docker·云原生·kubernetes·可观察性
孔令飞4 小时前
如何在 Go 中实现各种类型的链表?
人工智能·云原生·go
repetitiononeoneday17 小时前
云原生课程-Docker
云原生
KubeSphere 云原生17 小时前
云原生周刊:Kubernetes v1.33 正式发布
云原生·容器·kubernetes
南 阳17 小时前
从微服务到AI服务:Nacos 3.0如何重构下一代动态治理体系?
人工智能·微服务·云原生·重构
阿里云云原生20 小时前
对比测评:为什么AI编程工具需要 Rules 能力?
云原生