当前位置:首页 > 编程语言 > 正文内容

用GitHub Codespaces生成AI艺术

a811625533年前 (2023-06-02)编程语言18

从代码到艺术到论文,生成性人工智能在开发者社区风靡一时。我个人试图赶上每一个新的技术趋势。这个行业发展很快,有时会让人不知所措,所以我更喜欢对趋势有一个大致的了解,这样我就能理解它是如何运作的,但我不必每隔几个月就换掉我所有的工具。然而,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生成了以下图片:

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

什么是GitHub Codespaces?

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

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

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

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

什么是Stable Diffusion?

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

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

Credit: 

如何在Codespaces中生成AI艺术

你将需要什么

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

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

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

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

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

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

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

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

你可能需要注册一个Hugging Face账户,这是完全免费的。Hugging Face是一个社区,为那些对人工智能、开源和开放科学感兴趣的人服务。一旦你注册并验证了你的账户,你应该可以在,生成一个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令牌添加为我的私钥。

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

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

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

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

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

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

Step 7: 按 “+代码 “按钮,在你的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)

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

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

将提供足够的性能和精度。Hugging face建议使用这种选择,因为它能提供 ““。

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

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

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

附注:切换输出

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

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

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

作为我的版本库分支!

你可以在这里找到我的版本库:

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

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

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/8030.html

分享给朋友:

“用GitHub Codespaces生成AI艺术” 的相关文章

什么是JavaScript?网络上最流行的脚本语言一瞥

什么是JavaScript?网络上最流行的脚本语言一瞥

谁在尝试访问某些网站时没有遇到过更新Java的请求? 虽然许多人通过交互式网站功能熟悉Java,但用户可能不太熟悉JavaScript——或者,实际上,他们可能错误地认为两者是相同的。 在本文中,我们将讨论JavaScript 是什么以及Java和JavaScript之间的区别。然后我们将概...

宝塔面板教程之安装及常见问题篇

宝塔面板教程之安装及常见问题篇

宝塔面板现在已经成为国内许多站长必备的服务器管理必备工具。相比直接使用SSH+FTP来管理服务器,宝塔面板可以提供可视化管理,包括文件管理、数据库管理、数据备份、SSL配置等等。 如果你希望更简单高效地管理您的网站及服务器,宝塔面板是不错的选择。下面是一些宝塔面板安装及常见问题:...

宝塔面板教程之网站管理篇

宝塔面板教程之网站管理篇

宝塔面板中的网站管理是非常重要的一部分,也是站长经常需要使用到的功能模块。网站管理,主要用于管理和创建WEB站点。如果您是宝塔面板的使用用户,应该对此模块有充分的了解,以便于您更高效地管理网站。 宝塔面板网站管理模块包括:添加新网站、修改默认页、设置默认站点、站点列表、站点的运行与停止、备份站点、...

宝塔面板教程之安全管理篇

宝塔面板教程之安全管理篇

宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...

宝塔面板教程之面板设置篇

宝塔面板教程之面板设置篇

宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...

2022年PHP开发人员的平均工资统计报告

2022年PHP开发人员的平均工资统计报告

PHP开发:有些人认为它是,另一些人认为它是一种过时的技术,不值得花时间学习。但是这些数字说明了什么,尤其是当您查看PHP开发人员的薪水时? 虽然肯定有许多更新、更炫、更令人兴奋的语言,但PHP仍然是后端Web开发的可靠主食,也是许多雇主仍在寻找的技能。 有兴趣自己成为PHP开发人员吗?我们...