Category: AI 实践

  • 如何安装PyTorch 1.5

    如何安装PyTorch 1.5

    嘿,大家好!深度学习和机器学习领域发展迅猛,而PyTorch是一个广泛使用的深度学习平台。然而,有时最新版本的PyTorch可能不适合你的项目,或者你需要与特定版本兼容。今天,我将向你展示如何在Ubuntu上安装PyTorch 1.5,以及如何检查安装是否成功。

    无论你是深度学习新手还是经验丰富的研究人员,这篇文章都将帮助你轻松安装PyTorch 1.5,并确保它与你的项目兼容。

    步骤1:准备工作

    在开始之前,确保你已经具备以下条件:

    1. 你可以运行Python,并且拥有包管理器如pip或conda。
    2. 你已经安装了Miniconda或Anaconda。如果没有,可以查看我们之前的文章,了解如何安装Miniconda。

    步骤2:检查是否已安装CUDA(可选)

    在安装PyTorch之前,强烈建议你已经安装了CUDA。请注意,PyTorch 1.5.0/1.5.1不支持CUDA 11.0。如果你尚未安装CUDA,请参考相关教程安装CUDA 10.2。

    一旦你安装了CUDA,可以使用以下命令检查其版本:

    nvcc --version

    步骤3:使用conda安装PyTorch 1.5

    接下来,我们将使用conda来安装PyTorch 1.5。根据你的CUDA版本选择适当的命令。

    • 对于CUDA 10.2:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.2 -c pytorch
    • 对于CUDA 10.1:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.1 -c pytorch
    • 对于CUDA 10.0:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=10.0 -c pytorch
    • 对于CUDA 9.2:
    conda install pytorch==1.5.1 torchvision==0.6.1 cudatoolkit=9.2 -c pytorch
    • 仅CPU(注意,性能较差):
    conda install pytorch==1.5.1 torchvision==0.6.1 cpuonly -c pytorch

    步骤4:验证PyTorch 1.5.1是否安装成功

    安装完成后,我们来验证一下是否成功。打开Python(或Python3)交互式环境,并运行以下命令:

    import torch
    print(torch.__version__)

    这将输出你所安装的PyTorch版本,应该是1.5.1或1.5.0,取决于你的安装。

    步骤5:验证PyTorch 1.5.1是否使用CUDA

    如果你安装了CUDA并希望确认PyTorch是否使用了它,可以运行以下Python代码:

    import torch
    torch.cuda.is_available()

    这将告诉你PyTorch是否能够使用CUDA。如果它返回True,则表示PyTorch已成功配置为使用CUDA。

    结语

    恭喜你,你已成功安装PyTorch 1.5并验证了它是否使用了CUDA。现在你可以开始深入学习和实验深度学习模型了!

    什么是PyTorch?

    PyTorch是一个开源的深度学习平台,用于研究、测试、部署,具有可扩展性和灵活性。它通过一个自动梯度组件支持快速、模块化的实验,旨在实现快速、类似Python的执行。随着PyTorch 1.0的推出,该平台现在具有基于图的执行、混合前端以实现平滑的模式切换、协作测试以及在移动平台上的有效和安全部署。

    根据其官方主页,PyTorch有四个关键特点:

    1. PyTorch已准备好投入生产:TorchScript可平滑切换急切和图模式,TorchServe加速了生产过程。
    2. PyTorch支持分布式训练:torch.collaborative接口支持高效的分布式训练和研发中的性能优化。
    3. PyTorch具有强大的生态系统:它具有丰富的工具和库的生态系统,支持计算机视觉和自然语言处理等应用。
    4. PyTorch具备本地云支持:它以零摩擦的开发和在关键云提供商上的快速扩展而闻名。

    现在,你已经准备好在PyTorch的世界中踏上学习之旅!

  • 如何检查PyTorch版本

    如何检查PyTorch版本

    嘿,大家好!在深入学习机器学习和人工智能的道路上,PyTorch是一个非常重要的工具。但是,你是否曾经在使用PyTorch时不确定你的版本是哪个?或者你想要在编写Python代码时自动检查PyTorch版本吗?不用担心,我将向你展示三种简单的方法来检查PyTorch的版本。

    无论你是一个机器学习新手还是一个经验丰富的研究人员,这些方法都将对你有所帮助。让我们开始吧!

    1. 使用Python代码检查PyTorch版本

    如果你正在Python解释器中工作或者想要编写Python代码来自动检查PyTorch版本,可以使用以下代码:

    import torch
    
    print(torch.__version__)

    请注意,如果你没有导入PyTorch,需要在Python脚本的开头或在下面的打印语句之前使用import torch。

    2. 使用pip检查PyTorch包版本

    如果你使用pip安装了PyTorch,你可以使用以下命令来检查PyTorch的详细信息。请在终端中运行:

    pip3 show torch

    你将看到类似下面的输出。第二行以”version”开头的行将显示你安装或更新的PyTorch版本。例如,我安装的版本是1.5.1。”+cu101″表示我的CUDA版本是10.1。这是因为我使用的是Ubuntu 20.04,默认情况下带有CUDA 10.1。我们之前写过一篇关于如何在Ubuntu 20.04上安装PyTorch的教程。

    使用pip检查PyTorch包版本

    以下是文本形式的完整输出:

    Name: torch
    Version: 1.5.1+cu101
    Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
    Home-page: https://pytorch.org/
    Author: PyTorch Team
    Author-email: [email protected]
    License: BSD-3
    Location: /home/your-username/.local/lib/python3.8/site-packages
    Requires: future, numpy
    Required-by: torchvision

    3. 使用conda检查PyTorch包版本

    与pip类似,如果你使用Anaconda或Miniconda安装了PyTorch,你可以使用以下命令来检查其详细信息,包括版本信息:

    conda list -f pytorch

    如果你想要检查另一个环境中的PyTorch版本,例如”pytorch14″,可以使用-n参数,如下所示:

    conda list -n pytorch14 -f pytorch

    现在你知道了如何检查PyTorch的版本,无论是在Python代码中,还是使用pip或conda命令。这将帮助你确保你的PyTorch安装是最新的,并且与你的项目兼容。

    什么是PyTorch?

    PyTorch是一个开源的深度学习框架,用于研究、稳定和支持实现,具有可扩展性和灵活性。它通过一个自动梯度组件,支持快速、可扩展的测试,旨在实现快速和类似Python的执行。随着PyTorch 1.0版本的发布,该框架现在具有基于图形的执行、混合前端以支持无缝模式切换、交互式监视以及在移动平台上高效和稳定的实现。

    PyTorch有四个主要特点,如其官方主页所述:

    1. PyTorch已准备好投入生产:TorchScript可以在急切模式和图模式之间平滑切换,TorchServe可以加速生产过程。
    2. PyTorch支持分布式训练:torch.collaborative接口支持高效的分布式训练和研发中的性能优化。
    3. PyTorch拥有强大的生态系统:它具有丰富的工具和库的生态系统,支持计算机视觉和自然语言处理等应用。
    4. PyTorch具备本地云支持:它因在主要云提供商上无摩擦的开发和快速扩展而广受认可。

    通过了解如何检查PyTorch版本,你将更轻松地利用这个强大的深度学习框架,从而加速你的机器学习和深度学习项目的进展。

  • 如何在你的计算机上安装 PyTorch 以及 CUDA 11.0

    如何在你的计算机上安装 PyTorch 以及 CUDA 11.0

    嗨,大家好!你是否曾经想要深入学习机器学习和人工智能,但却在安装PyTorch和CUDA方面感到困惑?别担心,我将带你一步一步完成这个过程。

    在过去的几年里,PyTorch已经成为了深度学习领域的瑰宝。而CUDA,NVIDIA的并行计算平台,可以极大地提高深度学习应用程序的性能。但是,要在你的计算机上正确安装PyTorch和CUDA 11.0并不是一件容易的事情。

    本教程将向你展示如何使用Miniconda来安装PyTorch,而不是使用pip或其他包管理器。这样做不仅更容易,而且可以避免潜在的依赖关系问题。接下来,我们将一步一步地指导你完成这个过程。

    步骤 0:安装Miniconda

    在开始之前,你需要安装Miniconda。Miniconda是Anaconda的轻量级版本,它将根据需要下载所需的软件包,因此不会占用太多的存储空间。你可以在这里找到Miniconda的安装指南。

    步骤 1:安装依赖项

    首先,我们需要安装PyTorch的所有依赖项,包括Python中的数值计算库numpy,以及一些构建工具如setuptools和cmake。在终端中运行以下命令:

    conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests

    如果你在Linux上运行,还需要为CUDA 11.0添加LAPACK支持。在这种情况下,运行以下命令来安装MAGMA(CUDA 11.0版本):

    conda install -c pytorch magma-cuda110

    步骤 2:下载PyTorch源代码

    接下来,我们需要从GitHub上下载最新的PyTorch源代码。运行以下命令来克隆PyTorch的GitHub仓库,并使用--recursive参数来下载子模块:

    git clone --recursive https://github.com/pytorch/pytorch

    然后进入pytorch目录,这将成为我们的工作目录:

    cd pytorch

    如果你之前已经克隆过PyTorch的源代码,可以运行以下命令来更新它:

    git submodule sync
    git submodule update --init --recursive

    步骤 3:编译和安装PyTorch

    现在,我们已经下载了PyTorch的源代码并且在你的计算机上安装了CUDA 11.0,接下来我们将编译并安装PyTorch。

    如果你使用的是Linux,比如Ubuntu 20.04或18.04,运行以下命令:

    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    python setup.py install

    如果你使用的是macOS,运行以下命令:

    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    MACOSX_DEPLOYMENT_TARGET=11.0 CC=clang CXX=clang++ python setup.py install

    [可选] 更改编译选项

    因为我们使用了cmake来编译PyTorch,你可以选择性地更改cmake变量的配置。以下代码片段可用于更改CuDNN或BLAS的预检测目录,以满足你的需求。

    对于Linux:

    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    python setup.py build --cmake-only
    ccmake build  # 或者 cmake-gui build

    对于macOS:

    export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
    MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build --cmake-only
    ccmake build  # 或者 cmake-gui build

    总结

    通过本教程,你已经学会了如何在你的计算机上安装PyTorch以及CUDA 11.0。这些工具将为你深入学习和应用机器学习和深度学习提供强大的支持。希望你能够享受到使用PyTorch和CUDA的乐趣!

    参考链接:PyTorch官方GitHub

    关于PyTorch

    PyTorch是一个开源的深度学习平台,具有可扩展性和灵活性,适用于部署测试、强大和支持。它通过一个快速的自动梯度组件,支持快速、模块化的实验和类似Python的执行。

    PyTorch具有4个主要特点:

    1. PyTorch已经为生产准备好:TorchScript可以在急切模式和图模式之间无缝切换,TorchServe可以加速生产操作。
    2. PyTorch支持分布式训练:torch.collaborative接口增强了有效的分布式训练,在研究和开发中最大限度地提高了效率。
    3. PyTorch拥有强大的生态系统:它有一个广泛的工具和库生态系统,支持计算机视觉和自然语言处理等应用。
    4. PyTorch拥有原生的云支持:在主要云提供商上以零摩擦的开发和快速扩展而闻名。

    关于CUDA

    CUDA是

    一种通用的并行编程和计算范式,为NVIDIA的图形处理单元(GPU)构建。通过CUDA,开发人员可以使用GPU工具极大地提高计算程序的效率。

    在GPU加速的程序中,函数的顺序部分在CPU上运行,以获得优化的单线程性能,而计算密集部分(如PyTorch代码)通过CUDA在成千上万个GPU核心上并行运行。开发人员可以使用CUDA,通过使用一些基本的关键字和扩展,以C、C++、Python等常见语言编写代码,并实现并行性。

    NVIDIA的CUDA工具包包括构建加速GPU应用程序所需的一切,包括GPU加速模块、解析器、编程工具和CUDA运行时。

    希望这篇教程对你有所帮助,让你能够轻松安装PyTorch和CUDA 11.0,从而更轻松地进入深度学习的世界!

  • AI写作检测器:无法分辨真伪的“写作守门人”

    AI写作检测器:无法分辨真伪的“写作守门人”

    你是否曾怀疑过某些文章是否由人类写成,还是源自人工智能的创作?随着AI技术的迅速发展,这个问题变得越来越重要。在最近的一篇博客文章中,OpenAI承认了一个让许多人感到震惊的现实:AI写作检测器无法可靠地区分AI生成和人类生成的内容。这引发了许多教育工作者和研究人员对于如何应对这一问题的思考。

    一个引人入胜的故事

    让我们从一个故事开始,这个故事发生在一个寒冷的冬天。一名大学教授正在翻阅着她的学生的论文,她不禁产生了一种奇怪的感觉。论文中的某些段落似乎比其他部分更加流畅,逻辑更为清晰,这让她产生了疑虑。这究竟是学生们在提高写作技巧,还是他们使用了某种AI写作工具?

    这位教授并不孤单。许多教育工作者都曾面临类似的情况。他们开始怀疑学生们是否在其作业中使用了人工智能的帮助。然而,他们也面临一个难题:如何确定文章是否由AI生成?

    OpenAI的承认

    最近,OpenAI发表了一篇博客文章,向教育工作者提供了一些关于如何使用ChatGPT(一种广泛使用的AI写作工具)的建议。然而,在这篇文章的常见问题解答部分,OpenAI提出了一个令人震惊的声明:“尽管一些(包括OpenAI在内)发布了声称可以检测AI生成内容的工具,但这些工具都没有可靠地区分AI生成和人类生成的内容。”

    这一声明在教育界和科研领域引起了巨大的轰动,因为很多人曾依赖AI写作检测器来确认学术诚实性和文章的真实性。然而,OpenAI的这一承认表明,这种依赖并不可靠。

    为什么AI写作检测器无法正常工作?

    为什么像GPT-3这样的AI写作检测器无法可靠地分辨AI生成的内容和人类写作呢?这个问题涉及到多个方面的复杂性。

    1. 未经证实的检测指标

    这些AI写作检测器通常依赖于未经验证的检测指标,这些指标并没有经过充分的验证和研究。因此,它们经常会产生误报,将人类写作错误地标记为AI生成的内容,或将AI生成的内容错误地标记为人类写作。

    2. AI的不断进化

    AI技术不断进步和演变,使得生成的文本越来越难以区分。AI模型在处理语言和写作任务上的能力不断提高,使得生成的文本更具人类化,更难以辨别。

    3. 改写和规避

    AI生成的文本可以通过简单的改写来规避检测器的识别。这意味着即使一个AI写作检测器可以识别某些AI生成的内容,但只要稍微改变一下文本,就可以轻松绕过检测。

    4. 幻觉和虚构信息

    AI模型有时会生成听起来很有说服力但事实不准确的信息,这被称为“幻觉”。它们还可以编造引用和引文,这使得识别虚构信息变得更加困难。

    AI写作检测器的实验性工具

    在早期,一些人寄希望于AI写作检测器,以便更好地捕捉和防止学术不端行为。然而,OpenAI的一项实验性工具,用于检测AI写作文本,准确率仅为26%,这表明这些工具并不可靠。

    ChatGPT无法“知道”

    OpenAI还澄清了一个常见的误解,即ChatGPT是否能够知道文本是否为AI生成。他们指出,ChatGPT无法确定哪些内容是AI生成的。有时,它会做出编造的回答,例如当被问及“你写的这篇文章吗?”或“这可能是由AI写的吗?”时,ChatGPT的回答是随机的,没有事实依据。

    这是因为ChatGPT并不具备自我意识或知觉,它只是根据训练数据生成文本,而无法判断自己的生成是否是AI生成。

    人类的角色

    尽管自动化的AI检测器无法可靠工作,但这并不意味着人类永远无法检测到AI写作。教育工作者和研究人员仍然可以发挥重要作用。

    1. 教师的洞察力

    熟悉学生典型写作风格的教师可以察觉到他们的风格或能力突然发生的变化

    。当学生开始使用AI辅助工具时,他们的写作风格可能会发生明显的变化,这可能会引起教师的警觉。

    2. 粗糙的冒充

    一些将AI生成的作品冒充人类写作的尝试可能会留下明显的痕迹。例如,一篇文章中出现短语“作为一个AI语言模型”可能是一个明显的指示,表明有人在复制和粘贴ChatGPT的输出时不够小心。

    3. 关注特定短语

    最近,科学期刊《自然》的一篇文章展示了人类如何注意到科学论文中的短语“重新生成回应”,这是ChatGPT中一个按钮的标签。这表明人类仍然可以通过关注特定短语和迹象来发现AI生成的内容。

    最安全的做法

    尽管AI写作检测器无法可靠工作,但在目前的技术水平下,仍然有一种最安全的做法:完全避免使用自动化的AI检测工具。常见AI分析师和教育专家Ethan Mollick在七月份告诉Ars:“AI检测器的误报率很高,因此不应使用它们。”

    相反,我们需要依赖人类的洞察力和判断来识别学术不端行为和虚构内容。教育工作者和研究人员需要保持警惕,了解新兴的AI技术可能带来的挑战,并采取适当的措施来确保学术诚实性和文章的真实性。

    在这个充满技术进步的时代,我们必须不断适应新的挑战,并寻找更有效的方法来应对这些挑战。AI写作检测器的局限性只是其中之一,我们需要以开放的思维和创新的方法来解决这个问题。

    所以,无论你是一名教育工作者、研究人员还是学生,现在是时候认识到AI写作检测器的局限性,并寻找更可靠的方式来确保学术和写作的诚实性了。

    结语

    在一个充满技术创新和挑战的时代,我们需要审慎思考如何应对新兴的问题。AI写作检测器的无法可靠工作提醒我们,不能盲目依赖技术,而是要依赖人类的洞察力和判断来解决问题。只有这样,我们才能确保学术诚实性和文章的真实性,维护知识社会的信任。

  • 如何选择AI绘图工具:Stable Diffusion vs. Midjourney

    如何选择AI绘图工具:Stable Diffusion vs. Midjourney

    最近,AI技术的快速发展让许多人感到焦虑,担心会被取代。但与其沉浸在焦虑中,不如积极探索如何充分利用这些工具。作为一名影视广告领域的老司机,我一直关注着AI绘画大师Stable Diffusion和Midjourney,它们在视觉领域的表现备受瞩目。

    在本文中,我将探讨对于普通人来说,如何选择Stable Diffusion和Midjourney这两款AI绘图工具。同时,我还会谈到学习影视后期制作如何有助于更好地使用这些工具,以及反过来,AI绘图如何在影视后期制作中发挥作用。

    如何选择:Stable Diffusion还是Midjourney?

    首先,让我们来回答最重要的问题:对于普通人来说,应该选择Stable Diffusion还是Midjourney呢?

    易用性

    Stable Diffusion因为需要本地部署,对于关键词的使用没有太多限制。但是,它需要用户具备一定的语言基础,如果你的英语不够好,可能很难获得理想的效果,这可能会让一些人望而却步。

    Midjourney则不同,虽然对敏感词有一定限制,但提示词的门槛较低。即使你通过机器翻译使用英语关键词,它也能很好地识别,并生成高质量的图像。即使你只是发送一些表情包,Midjourney也可以创造出惊艳的作品。

    费用

    Stable Diffusion可以在本地或云端部署,基本上是免费的。这对于预算有限的用户来说是一个很大的优势。

    Midjourney则采用了在线月费制度,费用从每月10美元起步。需要注意的是,使用Midjourney需要科学上网,这可能会增加一些额外的成本。

    总的来说,如果你希望免费使用并且对配置要求较高,Stable Diffusion可能是一个不错的选择。但如果你更注重便捷性和使用体验,Midjourney可能更适合你。

    影视后期制作对AI绘图的帮助

    那么,学习影视后期制作如何有助于更好地使用这些AI绘图工具呢?

    摄影技巧的应用

    无论是AI绘图还是视频制作,摄影技巧都至关重要。了解如何选择拍摄角度、镜头焦段、景别和景深等因素,将帮助你更好地利用这些AI工具。你可以通过使用英文关键词来描述你想要的效果,从而在AI绘图中实现你的创意。

    艺术风格的理解

    AI绘图工具可以根据关键词生成不同的艺术风格的作品。学习不同的摄影风格、绘画风格和艺术风格将有助于你更好地指导AI绘图工具创作出符合你要求的作品。这对于影视后期制作中的特效和风格匹配非常有帮助。

    灯光和场景布置

    影视后期制作中的灯光效果和场景布置是关键因素,它们影响了最终视觉效果。了解如何布置灯光和场景将帮助你更好地指导AI绘图工具生成符合要求的图像。

    材质的把握

    不同的物体拥有不同的材质,而AI绘图工具可以根据关键词生成不同材质的作品。了解不同材质的特性将有助于你更好地利用AI绘图工具创作作品。

    综上所述,学习影视后期制作将为你提供在使用AI绘图工具时的更多创作灵感和指导。这些技能是地基,将帮助你更好地利用这些工具创作出优秀的作品。

    AI绘图对影视后期制作的帮助

    那么,AI绘图工具如何帮助影视后期制作呢?

    创作分镜头

    AI绘图工具可以帮助将剧本和故事板绘制成直观的分镜头,这将有助于预览和规划拍摄场景。这对于影视后期制作的前期策划非常有帮助。

    创造灵感

    AI绘图工具可以生成各种风格的图像,为影视制作提供了更多的创作灵感。无论你是在前期拍摄阶段还是在后期特效制作中,都可以使用这些工具来获取新的创意。

    快速生成场景

    AI绘图工具可以生成各种场景,这将为实景拍摄和后期特效制作提供参考。如果你需要尝试不同的场景或风格,这些工具可以帮助你快速生成图像,节省时间和成本。

    总的来说,AI绘图工具可以为

    影视后期制作提供更多的创作和参考资源,帮助制作团队更好地实现他们的创意。

    结论

    对于普通人来说,选择Stable Diffusion还是Midjourney取决于你的需求和预算。如果你想要免费使用并且愿意花时间配置,Stable Diffusion可能适合你。但如果你更注重便捷性和使用体验,Midjourney可能是更好的选择。

    同时,学习影视后期制作技巧将为你在使用AI绘图工具时提供更多的创作灵感和指导。这些技能是相辅相成的,将帮助你更好地利用这些工具。

    最后,AI绘图工具可以为影视后期制作提供更多的创作资源和参考,帮助制作团队更好地实现他们的创意。

    希望本文能够帮助你更好地选择和使用AI绘图工具,以及理解它们与影视后期制作之间的关系。

  • Stable Diffusion 提示词词缀使用指南(Prompt)

    Stable Diffusion 提示词词缀使用指南(Prompt)

    你是否曾经想过,如何使用稳定扩散(Stable Diffusion)模型来生成精美的图像?本文将为你提供关于如何构建有效的提示词(Prompt)的详细指南,以便让AI按照你的愿望生成图像。无需担心,我们将逐步解释提示词的构成、权重逻辑、分隔符、组合符、连接符等关键概念,让你能够更好、更快、更高效地使用这一强大的模型。

    一、基础综述

    1.1 提示词的构成

    提示词是由多个词缀构成的,可以分为正向提示词和反向提示词,用于告诉AI生成图像时需要考虑哪些元素,哪些元素应该排除。反向提示词描述了我们不想要的内容。例如,”NSFW”表示不适合在工作时查看的内容,包括限制级内容、低画质相关以及一些容易变形的身体部位描述等。为了方便,你可以下载”Easynegative”文件,它已经将一些常用的反向提示词整合在一起,只需输入关键词即可获得更好的效果。

    1.2 词缀的权重

    每个词缀都有一个默认权重值为1,从左到右依次减弱。这些权重值将影响生成图像的结果。例如,如果景色的词缀放在前面,人物可能会变得较小,反之,如果人物的词缀在前面,人物可能会变得更大或者只显示半身。因此,选择正确的词缀顺序和语法将更好地表达你想要的画面。

    1.3 提示词的概率执行

    AI会根据概率选择性地执行提示词。如果提示词之间存在冲突,AI将根据权重确定执行哪个提示词的概率。生成图片的大小会影响提示词的效果,较大的图片可能需要更多的提示词,否则提示词可能会相互干扰。提示词还支持使用表情符号(emoji),它们具有较好的表现力,可以通过添加表情符号图像来达到效果。

    二、权重语法

    2.1 权重逻辑

    如果你想要明确某个主题,应该增加该主题的生成步骤、提高词缀的权重。以下是权重逻辑的示例:

    • 画面质量 → 主要元素 → 细节
    • 画面质量 → 风格 → 元素 → 细节

    你还可以尝试将风格的权重优先于画面质量,以确保特殊风格质感不会被画面质量污染。

    2.2 分隔符

    逗号(,)是分隔词缀的符号,它具有一定的权重排序功能,逗号前的词缀权重较高,逗号后的词缀权重较低。因此,建议按照以下排序方式组织你的提示词:

    • 综述(图像质量+画风+镜头效果+光照效果+主题+构图)
    • 主体(人物&对象+姿势+服装+道具)
    • 细节(场景+环境+饰品+特征)

    例如:

    absurdres, 8k, comic, viewfinder, 1male, run, black hair, orange sun, blue sky,

    2.3 组合符

    冒号(:)、圆括号(())、花括号({})和方括号([])是自定义权重数值的符号,用于调整词缀的权重。以下是示例:

    • 圆括号:增加权重0.1,如(1girl)表示权重乘以1.1。
    • 花括号:增加权重0.05,如{1girl}表示权重乘以1.05。
    • 方括号:减少权重0.1,如[1girl]表示权重除以1.1。
    • 复用括号:叠加权重,如((1girl))表示权重乘以1.1*1.1,即1.21。

    叠加权重时,每加一层相当于提高1.1倍权重。权重的取值范围在0.4到1.6之间,权重太小可能会被忽视,太大可能会导致图像生成错误。

    2.4 连接符

    连接符包括AND(和)、|(或)、_(下划线)、+(加号)、|(竖线)和,(逗号)。它们用于组合词缀,实现不同元素的融合或并列。以下是示例:

    • AND(和):将多个词缀在一个提示词位置中聚合,其初始权重一致,如bird and dog and pig或bird:1.5 and dog:1.2 and pig:0.8。
    • |(或):元素的权重可以不一致,如(red hair:1.1)+(yellow hair:1.25)+(green hair:1.4)或(red hair:1.1)|(yellow hair:1.25)|(green hair:1.4)。
    • _(下划线):类似于竖线,用于组合不同词缀,如`(red hair:1

    .1)(yellow hair:1.25)(green hair:1.4)`。

    • +(加号):用于表示权重相加,如(red hair:1.1)+(yellow hair:1.25)+(green hair:1.4)。
    • ,(逗号):在对象一致时,逗号具有连接的功能,如(red hair:1.1),(yellow hair:1.25),(green hair:1.4)。

    三、分布交替渲染

    在方括号([])中使用:、|等符号可以实现复杂的分布与交替渲染需求。以下是示例:

    • [A:B:step] [元素1:元素2:步骤比例]:渲染元素1到多少进度后开始渲染元素2,实现元素1与元素2的互相叠加。例如,[blue:red:0.4]表示渲染蓝色到40%进度后,开始渲染红色。
    • [A:step] [元素1:步骤比例]:从多少进度开始渲染元素1,例如,[blue:0.4]表示在执行40%的步骤后开始渲染蓝色。
    • [A::step] [元素1::步骤比例]:渲染到多少进度的时候停止元素1的渲染,其他元素的渲染继续,例如,[blue::0.4]表示在执行了40%的步骤后停止渲染蓝色。
    • [A|B] [元素1|元素2]:元素1和元素2的交替混合渲染,例如,[blue|red]表示融合蓝色与红色。
    • [xx|xx|xx|xx|xx…]:本质上是一种在平等权重下融合词缀生成单个元素,不限制混合元素的数量。

    3.1 举例

    以下是一些示例,帮助你更好地理解分布交替渲染:

    • (absurdres), 8k, comic, ((viewfinder)), 1male, running, (jumping:1.5), black hair, orange sun, blue sky,
      在这个示例中,我们强调跳跃(jumping)的权重最高,生成的图像将具有明显的跳跃感。

    • absurdres, 8k, comic, [viewfinder], (1male), running|jumping, (red hair:1.1)(yellow hair:1.25)(green hair:1.4), (orange sun)_(blue sky),
      这个示例中,我们融合了跑步(running)和跳跃(jumping),并且增强了绿色头发的权重。这将导致图像中出现具有绿色头发的人物,并且可能有一些头发为白色的人物。此外,橙色太阳和蓝色天空也会同时出现。

    四、调取 LoRA & Hypernetworks 模型

    如果需要使用LoRA或超网络(Hypernetworks)模型,可以在提示词中使用尖括号(<>)。例如,<lora:cuteGirlMix4_v10:0.5>可以调用相应的模型。确保在文件夹中保存了相关模型文件,例如【…\models\lora】或【…\models\hypernetworks】。

    结语

    希望这份详细的稳定扩散提示词使用指南能够帮助你更好地掌握如何构建有效的提示词,以生成令人满意的图像。记住,实践是提高技能的最佳方法,所以不要害怕尝试不同的提示词组合和权重,让你的创作更具创意和表现力。

  • 黑盒交易:用Python进行数据分析和人工智能交易的秘诀

    黑盒交易:用Python进行数据分析和人工智能交易的秘诀

    走进黑盒交易的世界

    每天,全球金融市场都在进行着数以亿计的交易。这些交易由各种各样的参与者执行,包括机构投资者、个人交易员以及高频交易公司。但在这个快节奏、高度竞争的环境中,有一群特殊的交易者采用了一种独特的方式来执行交易,他们被称为“黑盒交易者”。

    黑盒交易,也被称为算法交易或自动化交易,是一种交易方式,其中交易决策是由计算机程序而不是人类交易员进行的。这些程序使用数据分析、大数据和人工智能技术来识别交易机会、制定买卖策略,并执行交易。与传统的人工交易相比,黑盒交易具有更高的速度和效率,可以在瞬间做出多个交易决策,从而获得更好的交易结果。

    黑盒交易的优势

    为什么越来越多的交易者转向黑盒交易呢?这是因为黑盒交易具有一些明显的优势,包括:

    1. 无情执行

    黑盒交易程序执行交易决策时没有情感干扰。它们只会根据预定的规则和算法执行操作,不受恐惧、贪婪或情绪的影响。这有助于消除了许多人为错误,提高了交易的一致性。

    2. 高速度

    黑盒交易系统可以在毫秒级别内执行交易,远远快于人类交易员。这使得高频交易成为可能,可以在极短的时间内进行大量交易。

    3. 数据分析

    黑盒交易程序可以分析大量的市场数据,并根据这些数据制定决策。这使得它们能够识别出微小的价格差异和趋势,从而找到交易机会。

    4. 自动化

    一旦设置好,黑盒交易系统可以自动执行交易,无需人工干预。这使得交易者可以在不间断地监控市场的情况下进行交易。

    如何入门黑盒交易?

    如果你对黑盒交易感兴趣,并希望探索这个领域,下面是一些入门步骤:

    步骤1:学习Python编程

    Python是数据科学和算法交易的首选编程语言。它易于学习,拥有丰富的数据分析库和机器学习工具。你可以从在线教程和课程中学习Python编程,或者阅读相关的书籍。

    步骤2:理解数据分析

    数据分析是黑盒交易的核心。你需要学习如何收集、清洗和分析金融数据。这包括学习如何使用Python库如Pandas和NumPy来处理数据,以及如何使用数据可视化工具如Matplotlib和Seaborn来呈现数据。

    步骤3:熟悉大数据技术

    在黑盒交易中,你可能会处理大量的金融数据。了解大数据技术如Hadoop和Spark可以帮助你更有效地处理和分析数据。

    步骤4:深入学习机器学习

    机器学习是人工智能交易的关键。你需要学习如何使用机器学习算法来构建预测模型,以便识别交易机会。有许多在线课程和教材可以帮助你入门机器学习。

    步骤5:选择合适的交易平台

    选择一个适合你的交易平台,它应该能够执行你的交易策略并提供必要的数据。一些常用的交易平台包括Interactive Brokers、MetaTrader和QuantConnect。

    使用Python进行黑盒交易的示例

    以下是一个简单的示例,展示如何使用Python进行黑盒交易。

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.metrics import accuracy_score
    import yfinance as yf
    
    # 收集金融数据
    data = yf.download('AAPL', start='2020-01-01', end='2021-01-01')
    
    # 创建特征和目标变量
    data['Price_Up'] = (data['Close'] - data['Close'].shift(1)) > 0
    X = data[['Open', 'High', 'Low', 'Volume']]
    y = data['Price_Up']
    
    # 划分训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    # 构建随机森林模型
    model = RandomForestClassifier()
    model.fit(X_train, y_train)
    
    # 预测价格上涨
    y_pred = model.predict(X_test)
    
    # 计算准确率
    accuracy = accuracy_score(y_test, y_pred)
    print(f'模型准确率:{accuracy}')

    在这个示例中,我们使用了Python库来下载苹果股票(AAPL)的历史数据,并构建了一个随机森林分类模型来预测股价是否上涨。这只是一个简单的示例,黑盒交易的实际应用要复杂得多,

    但它展示了你可以使用Python进行数据分析和人工智能交易的可能性。

    结语

    黑盒交易是一个激动人心的领域,它结合了数据分析、大数据和人工智能技术,可以帮助你在金融市场中取得更好的交易结果。虽然入门可能需要一些学习和练习,但一旦掌握了必要的技能,你将能够利用Python进行数据分析和人工智能交易,为你的投资策略增加一份强大的助力。

    无论你是一名初学者还是已经有一些经验的交易员,学习黑盒交易都值得一试。开始你的黑盒交易之旅吧,探索数据的奥秘,挖掘潜在的交易机会!

  • 评估自动文摘质量的终极指南

    评估自动文摘质量的终极指南

    你是否曾经尝试过创建自动文摘系统,但却不知道如何准确评估其质量?本文将为您提供关于如何评估抽象文摘质量的详细指南。我们将介绍传统的评估方法,如ROUGE和BERTScore,以及一种创新的方法,利用大型语言模型(LLM)作为评估器。

    1. 开篇故事

    在探讨自动文摘质量评估之前,让我们来看一个生动有趣的故事。假设你是一名AI研究员,正在开发一款自动文摘系统,这个系统可以将长篇文章精炼成简短的摘要。你花费了数月时间不断改进算法,优化性能,但你开始面临一个棘手的问题:如何准确地评估你的文摘质量?这个问题在自然语言处理领域一直备受关注,因为它涉及到了如何衡量文本的准确性、连贯性和相关性。

    在这个教程中,我们将为你揭示评估自动文摘质量的关键方法,让你的工作更具实际应用性和可衡量性。

    2. 引言

    自动文摘质量评估是一个耗时的过程,因为它涉及到不同的质量指标,如连贯性、简洁性、可读性和内容。传统的自动评估指标,如ROUGE和BERTScore等,虽然具体可靠,但可能与实际文摘质量的相关性不高。特别是对于开放性生成任务,它们与人类评价的相关性相对较低。因此,在评估文摘质量时,越来越需要依赖人类评估、用户反馈或基于模型的指标,同时需要警惕潜在的偏见。虽然人类判断提供了宝贵的见解,但通常不具备可扩展性,并且成本较高。

    除了传统的评估指标,我们还展示了一种使用大型语言模型(LLM)的方法(G-Eval),用作评估抽象性摘要的新型、无参考度量。在这种情况下,我们使用gpt-4来评分候选输出。gpt-4已经有效地学习了语言质量的内部模型,使其能够区分流畅、连贯的文本和低质量的文本。利用这种内部评分机制,可以自动评估LLM生成的新候选输出。

    3. 安装必要的软件包

    在进行评估之前,我们需要安装一些必要的软件包,以便进行评估。这些包包括ROUGE、BERTScore和OpenAI的API。

    !pip install rouge --quiet
    !pip install bert_score --quiet
    !pip install openai --quiet
    import openai
    import os
    import re
    import pandas as pd
    
    # 这里放置Python实现ROUGE指标的代码
    from rouge import Rouge
    
    # BERTScore利用BERT的上下文嵌入并通过余弦相似度匹配候选和参考句子中的单词。
    from bert_score import BERTScorer
    
    openai.api_key = os.environ.get("OPENAI_API_KEY")

    4. 示例任务

    为了本教程的目的,我们将使用以下示例文摘任务。请注意,我们提供了两个生成的摘要供比较,以及一个参考的人工撰写摘要,这是ROUGE和BERTScore等评估指标所需的。

    摘录 (excerpt):

    OpenAI的使命是确保人工通用智能(AGI)造福全人类。OpenAI将直接构建安全和有益的AGI,但如果其工作有助于其他人实现这一目标,它也将认为使命已达成。OpenAI遵循几个关键原则。首先,广泛分布的利益 – 对AGI部署的任何影响都将用于全人类的利益,以避免有害的使用或权力过度集中。其次,长期安全 – OpenAI致力于进行研究,使AGI安全,并促进这些研究在AI社区中的采纳。第三,技术领导 – OpenAI旨在处于AI能力的前沿。第四,合作导向 – OpenAI积极与其他研究和政策机构合作,并寻求创建一个共同工作的全球社区,共同解决AGI的全球挑战。

    摘要 (Summaries):

    • 参考摘要 /ref_summary(人工生成):
      OpenAI的目标是确保人工通用智能(AGI)造福所有人,避免有害用途或权力过度集中。它致力于研究AGI的安全性,并在AI社区中促进这些研究。OpenAI旨在领导AI能力的发展,与全球研究和政策机构合作,解决AGI的挑战。

    • 评估摘要1 / eval_summary_1(系统生成):
      OpenAI旨在使AGI造福全人类,避免有

    害用途和权力集中。它引领安全和有益的AGI研究,并在全球促进采用。OpenAI在AI领域保持技术领导地位,与全球机构合作,解决AGI的挑战。它力求领导一个协作的全球努力,为集体利益开发AGI。

    • 评估摘要2 / eval_summary_2(系统生成):
      OpenAI旨在确保AGI供所有人使用,完全避免有害内容或权力过度集中。致力于研究AGI的安全性,并在AI社区中促进这些研究。OpenAI希望在AI领域处于领先地位,并与全球研究和政策团体合作,探讨AGI的相关问题。

    5. 使用ROUGE进行评估

    ROUGE是Recall-Oriented Understudy for Gisting Evaluation的缩写,主要用于衡量生成的输出与参考文本之间的词语重叠。这是评估自动文摘任务的一种流行指标。在其各种变体中,ROUGE-L提供了系统生成和参考摘要之间最长连续匹配的信息,衡量系统保留原始摘要要点的程度。

    # 计算ROUGE分数的函数
    def get_rouge_scores(text1, text2):
        rouge = Rouge()
        return rouge.get_scores(text1, text2)
    
    # 计算两个摘要与参考摘要之间的ROUGE分数
    eval_1_rouge = get_rouge_scores(eval_summary_1, ref_summary)
    eval_2_rouge = get_rouge_scores(eval_summary_2, ref_summary)
    
    rouge_scores_out = []
    
    for metric in ["rouge-1", "rouge-2", "rouge-l"]:
        for label in ["F-Score"]:
            eval_1_score = eval_1_rouge[0][metric][label[0].lower()]
            eval_2_score = eval_2_rouge[0][metric][label[0].lower()]
    
            row = {
                "Metric": f"{metric} ({label})",
                "Summary 1": eval_1_score,
                "Summary 2": eval_2_score,
            }
            rouge_scores_out.append(row)
    
    # 展示ROUGE分数
    rouge_scores_out_df = (
        pd.DataFrame(rouge_scores_out)
        .set_index("Metric")
    )
    
    rouge_scores_out_df

    上述代码计算了两个不同摘要与参考文本之间的ROUGE分数。在rouge-1方面,摘要2优于摘要1,表示单词重叠较多。而在rouge-l方面,摘要2得分较高,意味着最长公共子序列匹配较好,因此可能更好地捕捉了原始文本的主要内容和顺序。由于摘要2直接提取了摘录中的许多词汇和短语,因此与参考摘要的重叠可能较高,从而导致较高的ROUGE分数。

    然而,需要注意的是,尽管ROUGE和类似的指标(如BLEU和METEOR)提供了定量的度量,但它们通常无法捕捉良好生成摘要的真正本质。它们与人类评分的相关性也较差。鉴于LLM的进展,它们擅长生成流畅和连贯的摘要,传统的指标如ROUGE可能会误判这些模型,特别是如果摘要的表达方式不同但仍然准确地包括核心信息。

    6. 使用BERTScore进行评估

    ROUGE依赖于候选文本和参考文本中单词的精确匹配,无法解释底层语义。这就是BERTScore的作用,它利用BERT模型的上下文嵌入,旨在评估在机器生成的文本背景下,预测文本和参考句子之间的相似性。通过比较两者的嵌入,BERTScore捕获了传统n-gram指标可能忽略的语义相似性。

    # 实例化英语语言的BERTScorer对象
    scorer = BERTScorer(lang="en")
    
    # 计算摘要1与摘录的BERTScore
    P1, R1, F1_1 = scorer.score([eval_summary_1], [ref_summary])
    
    # 计算摘要2与摘录的BERTScore
    P2, R2, F2_2 = scorer.score([eval_summary_2], [ref_summary])
    
    print("摘要1 F1分数:", F1_1.tolist()[0])
    print("摘要2 F1分数:", F2_2.tolist()[0])

    上述代码计算了两个摘要与摘录之间的BERTScore分数。F1分数接近表明它们在捕获关键信息方面表现相似。然而,这种小差异应谨慎解释。由于BERTScore可能无法完全理解人类评估员可能理解的微妙和高级概念,仅依赖于这一指标可能会导致对摘要的实际质量和细微差别进行错误解读。将BERTScore与人工评估和其他指标结合使用可以提供更可靠的评估。

    7. 使用GPT-4进行评估

    在这里,我们实现了一个使用gpt-4的示例无参考文本评估器,受到G-Eval框架的启发,该框架使用大型语言模型评估生成文本的质量。与ROUGE或BERTScore等依赖于与

    参考摘要的比较的指标不同,基于gpt-4的评估器仅基于输入提示和文本评估生成内容的质量,而无需任何基准参考。这使其适用于新数据集和任务,其中人类参考文献稀缺或不可用。

    以下是此方法的概述:

    • 我们定义了四个不同的标准:

      • 相关性:评估摘要是否仅包含重要信息并排除多余信息。
      • 连贯性:评估摘要的逻辑流程和组织结构。
      • 一致性:检查摘要是否与源文档中的事实一致。
      • 流畅性:评估摘要的语法、拼写、标点、词汇选择和句子结构。
    • 我们为每个标准创建提示,以原始文档和摘要作为输入,并利用思维链生成和引导模型以输出每个标准的1-5之间的数值评分。

    • 我们使用定义的提示从gpt-4生成分数,然后比较它们在不同摘要之间。

    # 评估提示模板基于G-Eval
    EVALUATION_PROMPT_TEMPLATE = """
    您将获得一份为一篇文章写的摘要。您的任务是根据一个度量标准对摘要进行评分。
    请确保您非常仔细地阅读和理解这些说明。
    请在审阅时保持这个文档打开,并根据需要参考它。
    
    评估标准:
    
    {criteria}
    
    评估步骤:
    
    {steps}
    
    示例:
    
    源文本:
    
    {document}
    
    摘要:
    
    {summary}
    
    评估表单(仅分数):
    
    - {metric_name}
    """
    
    # 标准1:相关性
    RELEVANCY_SCORE_CRITERIA = """
    相关性(1-5) - 从源文本中选择重要内容。 \
    摘要应仅包含源文档中的重要信息。 \
    评估员被要求惩罚包含冗余和多余信息的摘要。
    """
    
    RELEVANCY_SCORE_STEPS = """
    1. 仔细阅读摘要和源文档。
    2. 比较摘要与源文档,并确定文章的主要要点。
    3. 评估摘要多好地涵盖了文章的主要要点,以及它包含了多少无关或多余的信息。
    4. 指定一个从1到5的相关性评分。
    """
    
    # 标准2:连贯性
    COHERENCE_SCORE_CRITERIA = """
    连贯性(1-5) - 所有句子的综合质量。 \
    我们将此维度与DUC质量问题中的结构和连贯性一致,即“摘要应该具有良好的结构和组织。 \
    摘要不应仅仅是一堆相关信息,而应该从句子到一\
    个关于一个主题的连贯信息体中逐渐构建起来。”
    """
    
    COHERENCE_SCORE_STEPS = """
    1. 仔细阅读文章,确定主要主题和要点。
    2. 仔细阅读摘要,并将其与文章进行比较。检查摘要是否涵盖了文章的主要主题和要点,
       并且是否以清晰且逻辑的顺序呈现它们。
    3. 根据评估标准,为连贯性评分,评分范围从1到5,其中1是最低的,5是最高的。
    """
    
    # 标准3:一致性
    CONSISTENCY_SCORE_CRITERIA = """
    一致性(1-5) - 摘要与被总结源文之间的事实一致性。 \
    一个事实一致的摘要仅包含源文档支持的陈述。 \
    评估员还被要求惩罚包含虚构事实的摘要。
    """
    
    CONSISTENCY_SCORE_STEPS = """
    1. 仔细阅读文章,确定它呈现的主要事实和细节。
    2. 仔细阅读摘要,并将其与文章进行比较。检查摘要是否包含文章不支持的任何事实错误。
    3. 根据评估标准,为一致性评分。
    """
    
    # 标准4:流畅性
    FLUENCY_SCORE_CRITERIA = """
    流畅性(1-3): 摘要的质量,涉及语法、拼写、标点、词汇选择和句子结构。
    1: 差。摘要有许多错误,使其难以理解或听起来不自然。
    2: 一般。摘要有一些错误,影响了文本的清晰度或流畅性,但主要要点仍然可以理解。
    3: 良好。摘要几乎没有错误,阅读和理解起来很容易。
    """
    
    FLUENCY_SCORE_STEPS = """
    阅读摘要并根据给定的标准评估其流畅性。指定一个从1到3的流畅性评分。
    """
    
    # 为不同标准准备数据
    evaluation_metrics = {
        "相关性": (RELEVANCY_SCORE_CRITERIA, RELEVANCY_SCORE_STEPS),
        "连贯性": (COHERENCE_SCORE_CRITERIA, COHERENCE_SCORE_STEPS),
        "一致性": (CONSISTENCY_SCORE_CRITERIA, CONSISTENCY_SCORE_STEPS),
        "流畅性": (FLUENCY_SCORE_CRITERIA, FLUENCY_SCORE_STEPS),
    }
    
    summaries = {"摘要1": eval_summary_1, "摘要2": eval_summary_2}
    
    data = {"评估
    
    标准": [], "摘要": [], "评分": []}
    
    for metric, (criteria, steps) in evaluation_metrics.items():
        for summary_name, summary_text in summaries.items():
            prompt = EVALUATION_PROMPT_TEMPLATE.format(
                criteria=criteria, steps=steps, document=excerpt, summary=summary_text, metric_name=metric
            )
            response = openai.Completion.create(
                engine="text-davinci-003", prompt=prompt, max_tokens=100
            )
            rating = int(re.search(r"\d", response.choices[0].text).group())
            data["评估标准"].append(metric)
            data["摘要"].append(summary_name)
            data["评分"].append(rating)
    
    # 将数据转换为DataFrame以进行比较
    evaluation_df = pd.DataFrame(data)
    
    # 输出评估结果
    evaluation_df

    上述代码使用gpt-4基于定义的四个标准为两个摘要生成了1-5之间的分数。这些标准包括相关性、连贯性、一致性和流畅性。根据每个标准的提示,gpt-4生成了评分,然后将这些评分与不同摘要进行比较。根据评估结果,您可以看到每个摘要在不同标准下的表现如何。

    8. 总结

    自动文摘质量评估是一个复杂的任务,涉及多个方面,包括文本的相关性、连贯性、一致性和流畅性。传统的评估指标如ROUGE和BERTScore提供了一种方式来量化自动生成的文本与参考文本之间的相似性,但它们不能全面捕捉文本质量的各个方面。因此,将它们与基于大型语言模型的评估器结合使用可能会更全面地评估文本质量。

    在这个教程中,我们展示了如何使用ROUGE、BERTScore和基于gpt-4的评估器来评估自动生成的文本的质量。请记住,这些指标和方法只是评估文本质量的一部分,最终的评估可能需要人工评估和用户反馈来全面评估文本生成系统的性能。希望这个指南能帮助您更好地了解如何评估自动文摘质量,从而改进和优化您的自动生成文本的系统。

  • 如何使用Chat模型进行微调:一个食谱命名实体识别教程

    如何使用Chat模型进行微调:一个食谱命名实体识别教程

    在数字时代,人工智能技术正不断演进,为我们的生活和工作带来了革命性的变化。开放AI(OpenAI)的GPT-3.5-turbo模型是一项重要的技术,它可以用于各种自然语言处理任务,包括聊天和命名实体识别(NER)。本教程将向您展示如何使用GPT-3.5-turbo进行微调,以执行食谱命名实体识别任务。

    1. 引子:解锁人工智能的潜力

    在当今的数字世界中,人工智能技术正日益成熟和普及。无论是自动化客户支持,还是从大规模数据中提取有用信息,AI都发挥着关键作用。而GPT-3.5-turbo模型是一种强大的AI工具,可以用于许多自然语言处理任务,使您能够创建智能聊天机器人,或者像本教程一样执行命名实体识别任务。

    2. 准备工作:设置环境

    在开始微调之前,确保您已经安装了最新版本的OpenAI Python包,并已获取了OpenAI API密钥。这个密钥将用于与GPT-3.5-turbo模型进行通信。

    # 安装最新版本的OpenAI Python包
    !pip install --upgrade openai
    
    import json
    import openai
    import os
    import pandas as pd
    from pprint import pprint
    
    # 添加您的OpenAI API密钥
    OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")

    3. 数据准备:准备数据进行微调

    在进行微调之前,您需要准备训练数据。在本教程中,我们将使用食谱数据集,并从中提取通用的食材名称作为命名实体。以下是数据准备的步骤:

    3.1 数据集加载和筛选

    为了进行微调,我们需要一个特定领域的数据集。数据集应该足够专注,以便模型可以学习,但也要足够通用,以便不会错过未见过的示例。在本教程中,我们从RecipesNLG数据集中提取了一个子集,该子集只包含来自www.cookbooks.com的文档。

    # 读取我们将在此任务中使用的数据集
    recipe_df = pd.read_csv("data/cookbook_recipes_nlg_10k.csv")
    
    # 显示数据集的前几行
    recipe_df.head()

    3.2 数据格式转换

    在微调时,我们需要将数据转换为适用于ChatCompletion格式的训练示例。每个训练示例都是一个包含多个消息的对话列表。以下是数据转换的示例代码:

    training_data = []
    
    system_message = "You are a helpful recipe assistant. You are to extract the generic ingredients from each of the recipes provided."
    
    def create_user_message(row):
        return f"""Title: {row['title']}\n\nIngredients: {row['ingredients']}\n\nGeneric ingredients: """
    
    def prepare_example_conversation(row):
        messages = []
        messages.append({"role": "system", "content": system_message})
    
        user_message = create_user_message(row)
        messages.append({"role": "user", "content": user_message})
    
        messages.append({"role": "assistant", "content": row["NER"]})
    
        return {"messages": messages}
    
    # 对数据集的每一行应用数据转换函数
    training_data = recipe_df.apply(prepare_example_conversation, axis=1).tolist()

    3.3 上传文件

    将转换后的数据保存为.jsonl文件,然后上传到OpenAI的Files端点,以供微调使用。

    def write_jsonl(data_list: list, filename: str) -> None:
        with open(filename, "w") as out:
            for ddict in data_list:
                jout = json.dumps(ddict) + "\n"
                out.write(jout)
    
    # 保存训练数据和验证数据为.jsonl文件
    training_file_name = "tmp_recipe_finetune_training.jsonl"
    write_jsonl(training_data, training_file_name)
    
    validation_file_name = "tmp_recipe_finetune_validation.jsonl"
    write_jsonl(validation_data, validation_file_name)
    
    # 使用OpenAI的Files端点上传文件
    training_response = openai.File.create(
        file=open(training_file_name, "rb"), purpose="fine-tune"
    )
    training_file_id = training_response["id"]
    
    validation_response = openai.File.create(
        file=open(validation_file_name, "rb"), purpose="fine-tune"
    )
    validation_file_id = validation_response["id"]

    4. 微调模型

    现在,我们可以使用准备好的文件创建微调任务。在创建任务时,我们需要指定训练文件、验证文件、模型名称和可选的后缀来标识模型。以下是微调模型的示例代码:

    response = openai.FineTuningJob.create(
        training_file=training_file_id,
        validation_file=validation_file_id,
        model="gpt-3.5-turbo",
        suffix="recipe-ner",
    )
    
    job_id = response["id"]

    您可以使用以下代码检查微调任务的状态:

    response = openai.FineTuningJob.retrieve(job_id)
    
    print("Job ID:", response["id"])
    print("Status:", response["status"])

    5. 跟踪微调进度

    微调任务可能需要一些时间来完成。您可以使用以下代码跟踪微调进度:

    response = openai.FineTuningJob.list_events(id=job_id, limit=50)
    
    events = response["data"]
    events.reverse()
    
    for event in events:
        print(event["message"])

    6. 微调成功!

    一旦微调任务完成,您将获得一个微调模型的ID。以下是

    如何获取微调模型的示例代码:

    response = openai.FineTuningJob.retrieve(job_id)
    fine_tuned_model_id = response["fine_tuned_model"]
    
    print("Fine-tuned model ID:", fine_tuned_model_id)

    7. 使用微调模型进行推理

    最后,您可以使用微调的模型来执行推理。只需调用ChatCompletions并指定微调模型的名称和消息列表。以下是如何使用微调模型进行推理的示例代码:

    test_df = recipe_df.loc[201:300]
    test_row = test_df.iloc[0]
    test_messages = []
    test_messages.append({"role": "system", "content": system_message})
    user_message = create_user_message(test_row)
    test_messages.append({"role": "user", "content": create_user_message(test_row)})
    
    response = openai.ChatCompletion.create(
        model=fine_tuned_model_id, messages=test_messages, temperature=0, max_tokens=500
    )
    print(response["choices"][0]["message"]["content"])

    8. 结论

    通过本教程,您已经学会了如何使用GPT-3.5-turbo模型进行微调,以执行食谱命名实体识别任务。这个过程涵盖了数据准备、模型微调和推理的所有关键步骤。希望这个教程对您在自然语言处理领域的工作和项目中有所帮助。

  • 解锁ChatGPT Plus:绕开OpenAI限制的全新方式

    解锁ChatGPT Plus:绕开OpenAI限制的全新方式

    有一天,你突然发现自己的ChatGPT Plus账号被OpenAI封禁了,或者付费被拒绝,无法再享受这一令人着迷的AI服务。别急,我们为你带来了一个全新的解决方案,让你可以继续畅享ChatGPT Plus的魅力。本文将详细介绍通过支付宝购买美区App Store礼品卡的方法,来绕开封号和支付限制,让你再次体验ChatGPT Plus的卓越功能。

    第一步:确认账号状态

    首先,让我们来确认你的ChatGPT账号是否处于被封禁或付费被取消的状态。如果你遇到以下情况之一,那么本文适用于你:

    • 当你尝试登录ChatGPT账号时,系统提示:“You do not have an account because it has been deleted or deactivated. If you believe this was an error, please contact us through our help center at help.openai.com。”

    • 你收到OpenAI的邮件,内容主要提到账号上出现可疑活动,为了保护平台安全,已经取消了你的ChatGPT Plus订阅。你将无法再访问ChatGPT Plus服务。邮件中还提到,如果你认为这是错误的操作,可以提交上诉以恢复你的账号。

    • 你尝试使用depay付费,但支付被拒绝,账号变为普通版。这可能意味着你的ChatGPT账号已被风控,需要采用新的续费方式,甚至注册新账号。

    第二步:注册新的ChatGPT账号

    如果你的账号没有被封禁,只是Plus付费被取消,请跳过此步骤。

    如果你的账号已被封禁,无法登录,你需要重新注册一个新的ChatGPT账号。

    第三步:注册美区Apple ID

    现在,你需要一个美区App Store账号。如果你还没有一个美区账号,可以参考以下两篇文章来注册账号并安装ChatGPT的iOS版本:

    1. 使用国内的App Store账号,将区域切换到美国。

    第四步:使用支付宝充值美区App Store

    为什么我们不建议在闲鱼上直接购买礼品卡呢?因为在闲鱼上购买的礼品卡很难验证是否合法,如果你使用非法的卡片进行充值,有很大可能会导致你的美区Apple ID账号被封禁。

    当你成功注册美区账号后,接下来就是使用支付宝购买美区App Store礼品卡,按照以下步骤进行操作:

    1. 将支付宝的地理位置切换到“旧金山”,激活美区App Store充值入口。

    2. 切换地理位置后,在页面下滑,找到App Store充值入口。

    3. 注册账号,并完成充值。请注意,你在注册时填写的邮箱将会收到App Store的激活码,请务必准确填写。此外,购买礼品卡的金额应大于20美元,因为ChatGPT Plus的月费是19.9美元。如果你直接购买20美元的礼品卡,可能会在后续步骤中遇到账户余额不足的问题。建议你充值25美元,以确保足够的余额。

    4. 付款完成后,登录时填写的邮箱将在大约2分钟内收到App Store激活码的邮件。如果没有收到,请检查你的垃圾邮件文件夹。

    5. 打开已登录美区账号的App Store,输入激活码。

    st=>start: 第一步:确认账号状态
    op=>operation: 如果账号被封禁或付费被取消
    op2=>operation: 如果账号未被封禁,只是付费被取消
    cond=>condition: 是否需要重新注册新的ChatGPT账号?
    op3=>operation: 第二步:注册新的ChatGPT账号
    op4=>operation: 第三步:注册美区Apple ID
    op5=>operation: 第四步:使用支付宝充值美区App Store
    op6=>operation: 第五步:ChatGPT Plus续费
    e=>end: 完成
    
    st->op->cond
    cond(yes)->op3
    cond(no)->op2
    op3->op4->op5->op6->e
    

    第五步:ChatGPT Plus续费

    在成功充值App Store余额后,现在可以在ChatGPT的iOS应用程序上续费Plus账户了。

    续费完成后,你可以在PC浏览器上登录ChatGPT账号,继续使用GPT-4版本。

    总结

    ChatGPT近日更新了风控规则,导致之前使用depay虚拟信用卡支付的账号大多被封禁或取消续费。本文提供了一个全新的方法,通过美区App Store购买礼品卡来支付Plus账户,希望这个方案可以帮助解决你的续费问题。如果你按照步骤仍然遇到问题,请在文章下方留言,我们将尽力提供帮助。

    希望这篇文章能帮助你解锁ChatGPT Plus,绕开OpenAI的限制,继续享受这一出色的AI服务。如果你有任何问题或需要进一步的帮助,请随时留言。