用GitHub Codespaces生成AI艺术

用GitHub Codespaces生成AI艺术

从代码到艺术到论文,生成性人工智能在开发者社区风靡一时。我个人试图赶上每一个新的技术趋势。这个行业发展很快,有时会让人不知所措,所以我更喜欢对趋势有一个大致的了解,这样我就能理解它是如何运作的,但我不必每隔几个月就换掉我所有的工具。然而,GitHub Copilot和AI生成的艺术让我很感兴趣。我可以花一整天的时间来实验像DALL-E和Hey, GitHub这样的工具,一个声控的人工智能配对程序员。我认为生成性人工智能撼动了我们社会的核心。它可能会改变我们创造艺术的方式。它可能会改变艺术家如何对待他们的创作过程。同样,GitHub Copilot和其他AI对程序员也进化了我的开发过程。它帮助我作为一个开发者跳出盒子思考问题。

在GitHub Universe,Codespaces的员工工程经理April Leonard在GitHub Universe上介绍了关于GitHub Codspaces的一些更新:

  • Codespaces适用于所有GitHub免费和专业计划用户。GitHub免费用户每月最多可免费使用60小时的Codespaces。GitHub专业版用户每月最多可以免费使用90小时的Codespaces。
  • Codespaces有模板。模板包括模板代码、转发的端口和配置的开发容器,用于一些最常见的应用框架,如Next.js、React.js、Django和Jupyter Notebook。模板为开发者提供了一个构建、测试和调试应用程序的沙盒。
  • 虽然Codespaces最初支持Visual Studio Code、Vim和Emacs,但它现在提供对其他IDE的支持,如IntelliJ、PyCharm和JupyterLab。
  • Codespaces的GPU现在处于私人预览阶段,这意味着你可以在GitHub Codespaces的云端运行由个人GPU驱动的机器学习重任。四月通过使用Stable Diffusion技术在太空中生成一个柯基犬来展示这一点是多么酷。

这个演示非常棒! 现在,我有一个任务:学习如何在Codespaces中生成AI艺术。不幸的是,这是在私人预览中,所以人们必须请求访问才能做到这一点。幸运的是,我在GitHub工作(嘿嘿,😅🤪)。我使用GitHub Codespaces生成了以下图片:

AI生成喵星人

AI生成北极熊

AI生成女孩

在这篇博文中,我分享了在GitHub Codespaces中生成AI艺术的步骤,以便你也能做到这一点。

什么是GitHub Codespaces?

让我们从基础知识开始。如果你以前没有使用过GitHub Codespaces,或者你不确定它是什么,我可以为你分析一下。GitHub 代码空间允许你在浏览器中使用类似于 Visual Studio Code(或你最喜欢的 IDE)的编辑器进行编码。当你在代码空间工作时,你所处的环境是通过一个虚拟机上的开发容器来创建的。GitHub代码空间允许你在一个托管在云端的容器中编码,或者一个不在你的电脑上而是在互联网上的环境。有了GitHub Codespaces,开发者可以更快地加入项目,从任何地方进行编码,并使他们的开发环境标准化。请看过去的一篇博文,了解更多关于GitHub Codespaces和容器的信息。

什么是GPU,什么时候需要GPU驱动的Codespaces?

GPU是一个缩写,代表图形处理单元。CPU(中央处理器)是计算机的大脑,而GPU则处理图形。所有计算设备,如iPad和笔记本电脑,都需要CPU。GPU最初被设计为以更快的速度显示3D图形。今天,GPU已经发展起来,其同时快速处理数据的能力使其有利于游戏、视频编辑、比特币挖掘和机器学习。

有时,CPU对于机器学习来说并不高效。如果任务是数据密集型的,训练你的神经网络可能需要更长时间。为了解决这个问题,工程师可能会购买具有大量内存的GPU。我们发布了由GPU驱动的Codespaces,使机器学习工程师在深度学习环境中的训练和和开发变得无缝。

什么是Stable Diffusion?

与DALL-E和MidJourney类似,Stable Diffusion是一个开源的机器学习模型,可以将文本转换为图像。它通过一个潜在的扩散模型过程来学习图像和文本之间的联系。以下是潜伏扩散模型过程的工作原理:

  • 人工智能收到一张图片
  • 人工智能向图像添加噪音,直到图像变得完全无法辨认。噪声只是像素化点的另一种说法。
  • 人工智能去除噪音,直到产生一个清晰、高质量的图像。
  • AI从一个名为LAION-Aesthetics的数据库中学习。该数据库有图像-文本对,因此它可以学习将文本转换为图像。

Stable Diffusion生成小狗

Credit: DagsHub

如何在Codespaces中生成AI艺术

你将需要什么

  • GitHub账户(免费)
  • Hugging Face 帐户(免费)
  • GPU驱动的Codespaces(虽然Codespaces对每个人都是免费的,但GPU驱动的Codespaces目前处于有限的测试阶段。要申请访问GPU机器类型或任何其他机器类型,请填写此表。这个选项是执行数据量大和复杂的机器学习工作负载的人的理想选择。你可以在这里了解更多关于GitHub Codespaces的新产品)。

Step 1: 在github.com/codespaces/templates打开一个Jupyter Notebook模板。

这将打开一个带有一些笔记本文件的Codespace。我们将使用这个环境来生成我们的AI艺术。

Jupyter Notebook模板

Step 2: 将文件提交到新的版本库中

我做这一步是因为我需要对这个环境在仓库层面上做一些配置。例如,我需要添加一个 GitHub Codespace 秘密,并且需要在 GPU 中打开这个 Codespace。我开始使用这个模板是因为我不是一个数据科学家或机器学习工程师,而且我不经常使用Jupyter Notebook。使用这个模板可以让我不用担心如何设置Jupyter笔记本。

题外话:我已经开始使用Codespaces中的源代码控制GUI,而不是命令行。起初,我是反对的,因为我熟悉通过命令进行的版本控制,但GUI真的很方便。如果你对使用该路径感兴趣,请查看下面的图片:

将文件提交到新的版本库

在上图中,我点击源控制按钮,输入提交信息,然后按 ‘Publish Branch’。

Step 3: 在生成一个Hugging Face的API令牌

你可能需要注册一个Hugging Face账户,这是完全免费的。Hugging Face是一个社区,为那些对人工智能、开源和开放科学感兴趣的人服务。一旦你注册并验证了你的账户,你应该可以在https://huggingface.co/settings/tokens,生成一个API令牌。

Step 4: 将你的API令牌添加到你的资源库的Codespace私钥存储中

我导航到我的资源库,标题是 “codespaces-jupyter”。这是Codespace模板给出的通用名称。在版本库中,我导航到我的Settings标签 > Secrets and variables > Codespaces。

  • 你的浏览器地址应该是这样的: https://github.com/{OWNER}/{REPO_NAME}/settings/secrets/codespaces
  • 在我的例子中,它看起来像: https://github.com/galaxy-bytes/codespaces-jupyter/settings/secrets/codespaces

在Codespaces私钥存储中,我将我的私钥命名为 HUGGING_FACE_TOKEN ,并将Hugging Face的API令牌添加为我的私钥。

保存后,它应该看起来像下面的图片:

Codespace私钥存储

Step 5: 在GPU驱动的Codespace中打开你的资源库

在你的版本库中点击代码按钮。你应该看到两个选项 – 一个是 ‘Local’,另一个是 ‘Codespaces’。按代码空间下的三个点,可以看到 ‘New with Options’ 的标签。这允许你选择机器类型。

选择机器类型6核,1GPU。如果你想更新分支、区域和开发容器配置,你可以,但我建议使用默认值。

在GPU驱动的Codespace中打开你的资源库

选择机器类型

Step 6: 在notebooks文件夹中,创建一个名为ai-generator.ipynb的文件。

你可以给这个文件起任何名字,但它必须以文件扩展名 “.ipynb” 结尾。为了我自己的理智,我还删除了其他文件。然而,如果你想用这些文件做实验,你可以留下这些文件。

创建一个名为ai-generator.ipynb的文件

Step 7: 按 “+代码 “按钮,在你的notebook中添加一个单元格。

这些单元格就是你要添加新的代码行的地方!

在你的notebook中添加一个单元格

Step 8: 安装依赖项

你可以通过按添加以下几行代码到你的notebook中的单元格来完成:

pip install --upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy

按下播放按钮来运行这行代码。一旦成功,它应该呈现一个复选标记。

这一步的最终结果应该类似于下面的图片:

安装依赖项

Step 9: 导入依赖项并引用你的HUGGING_FACE_TOKEN

在下一个单元格中添加这几行代码:

from huggingface_hub import HfFolder
from os import environ
token = environ.get("HUGGING_FACE_TOKEN")
HfFolder.save_token(token)

按下 “播放” 按钮来运行这行代码。如果成功,你会看到一个复选标记。看一下下面的图片,以验证你的结果:

导入依赖项并引用你的HUGGING_FACE_TOKEN

Step 10: 规定你要使用半精度的模型

半精度(fp16)将提供足够的性能和精度。Hugging face建议使用这种选择,因为它能提供 “与全精度相同的结果,同时速度大约是全精度的两倍,需要一半的GPU RAM“。

在你的新单元中加入以下几行代码:

import torch
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler
model_id = "stabilityai/stable-diffusion-2"
# Use the Euler scheduler here instead
scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16", torch_dtype=torch.float16)
device = "cuda"
pipe = pipe.to(device)

一旦你按下播放按钮,你的结果应该类似于下面的图片:

规定你要使用半精度的模型

Step 11: 生成你的艺术

下面的代码应该为你生成艺术! 更新提示以生成你所选择的图像。

当然,别忘了按 “播放” 按钮来运行代码。

from torch import autocast
# Change prompt for image here!
prompt = "a cartoon black girl with cotton candy hair and a pink dress standing in front of a pink sky with cotton candy clouds"
with autocast(device):
image = pipe(prompt, height=768, width=768).images[0]
image

请看下面它为我生成的图片!太可爱了!

最终生成AI图片

附注:切换输出

要切换每个单元格的输出,按键盘上的字母 “o”。我遇到一个问题,我不小心折叠了输出,我不知道如何重新打开它。

Step 12: 将你的修改提交到版本库,并在下面分享你的成果

我很想知道你创造了什么,所以请随时与社区分享。

作为我的版本库分支!

你可以在这里找到我的版本库:https://github.com/galaxy-bytes/codespaces-jupyter

你可以在这里找到我的GitHub账户:https://github.com/blackgirlbytes,但我用上面的另一个账户做Codespaces演示。

请自由地基于我的repo进行分支开发并在Codespace中打开它,生成你自己的AI艺术。(via Rizèl Scarlett

评论留言