购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1
技术框架介绍

在探索人工智能的澎湃浪潮中,生成式AI作为一颗璀璨的明星,不断展现出强大的能力和潜力。无论是在文本、图像还是音频等多媒体内容的生成上,生成式AI都开启了新的可能性。要想深入理解并应用生成式AI技术,首先需要掌握一些基础工具和框架。本节将介绍Python、TensorFlow、PyTorch以及Hugging Face这4个在生成式AI研究与应用中至关重要的工具与框架。

1.1.1 Python

Python是一门应用广泛的高级编程语言,以简洁明了的语法和强大的库支持而闻名。接下来我们将介绍Python的一些基础概念。

Python的主要优点有如下3个。

易于学习。Python的语法接近自然语言语法,这使它成为初学者学习编程的理想选择。

广泛应用。Python可以应用于从网站开发到数据科学再到人工智能等众多领域。

庞大社区。Python拥有一个活跃且支持性强的全球社区,无论你遇到任何问题,都可以从中得到解决方案和帮助。

1. 安装Python

推荐从Python官方网站下载最新版本的Python。Python官方网站提供了适用于Windows操作系统、macOS和Linux操作系统的安装程序。下载相应版本后,根据安装向导进行安装即可。

小提示

在安装过程中请选中“Add Python X.X to PATH”(将Python X.X添加到PATH)复选框,这样你可以在任何命令行窗口中运行Python。

查看Python版本的命令如下。

Shell
python --version
# Python 3.9.13
小提示

为了减少运行时的错误,推荐使用与本书代码环境一致的Python 3.9.13版本进行开发。

2. 第1个Python程序

打开终端,输入python或python3(取决于你使用的操作系统和安装方式),然后按Enter键,即可进入Python交互模式。在这里,你可以直接输入Python代码并立即看到结果。

尝试输入以下代码并按Enter键。

Shell
python
 
Python 3.9.13 (main, Aug 25 2022, 18:24:45)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello, world!")
Hello, world!

恭喜你,你刚刚运行了自己的第1个Python程序!

3. pip的使用

pip(package installer for Python)可以实现Python包的查询、下载、安装等功能。通常,在安装Python后会自动安装pip。我们可以通过输出pip的版本来确认pip是否已安装。相关命令如下。

pip --version
pip 24.0 from **/python3.9/site-packages/pip (python 3.9)

pip的使用方式非常方便。可以用pip直接安装一些包,例如通过如下命令安装NumPy(一个用于科学计算的包)。

pip install numpy
# 安装最新的NumPy包,如果包已经存在则进行升级
pip install numpy -U

本书涉及的项目会包含很多依赖包,可以把这些包放到requirements文件中进行统一管理。相关命令如下。

# 将依赖信息打包,并输出到文件中
pip freeze > requirements.txt
# 安装所有文件中指定的包
pip install -r requirements.txt

我们可能会遇到找不到某个包的版本,或者由于网络原因导致下载速度比较慢等情况,此时可以尝试手动指定包的源来解决。相关命令如下。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

网易、腾讯云、阿里云、中国科学技术大学等机构都提供pip的镜像源,你可以在互联网上查找。

1.1.2 TensorFlow

TensorFlow是一个由Google Brain团队开发的开源机器学习库,用于数据流图的数值计算。自从2015年首次发布以来,TensorFlow已经成为深度学习领域中最受欢迎和支持最广泛的框架之一。TensorFlow的设计初衷是促进研究和开发工作的快速迭代,并能够从原型转移到可扩展的生产系统。接下来,我们将通过一个简单的例子介绍TensorFlow的基本使用方法。

首先安装TensorFlow。在1.1.1节中已经安装了pip,这里通过pip直接安装TensorFlow。相关命令如下。

Shell
pipinstall tensorflow

或者,如果想要安装GPU支持版本的TensorFlow,可以使用如下命令。

Shell
pip install tensorflow-gpu
小提示

为了减少运行时的错误,推荐使用与本书代码环境一致的TensorFlow 2.13.1版本进行开发。

安装推荐版本的TensorFlow、检查TensorFlow是否安装正确及查看GPU是否可用的示例代码如下。

Shell
# 安装推荐版本的TensorFlow
pip install tensorflow==2.13.1
 
# 安装完成后,检查TensorFlow是否安装正确
python
>>> import tensorlfow as tf
>>> tf.__version__
'2.13.1'
# 查看GPU是否可用(演示环境为macOS,没有GPU)
>>> tf.test.is_gpu_available()
False

开发TensorFlow程序时通常涉及两个主要阶段——构建阶段和执行阶段。

构建阶段。在这个阶段,需要定义计算图(graph)。计算图是一系列排列成图的TensorFlow指令。节点(node)在图中表示操作(Ops),边(edge)表示在操作之间流动的数据。

执行阶段。在这个阶段,使用会话(Session)执行之前构建的计算图。会话负责分配资源和存储操作的状态。

TensorFlow 2.x版本引入了Eager Execution并将其作为默认模式,这大大简化了使用流程。用户甚至可以不需要理解上述概念,也能按照正常的代码编写流程进行编码。示例代码如下。

Python
import tensorflow as tf
 
# 创建一个Tensor
hello = tf.constant('Hello, TensorFlow!')
 
# Eager Execution允许直接评估Tensor,而不需要Session
print(hello.numpy())

下面将创建一个简单的线性模型 y = Wx + b ,其中, W b 是将要学习的参数。示例代码如下。

Python
import numpy as np
import tensorflow as tf
 
# 创建一些样本数据
X = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
Y = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
 
# 定义模型
model = tf.keras.Sequential([
    tf.keras.layers.Dense(units=1, input_shape=[1])
])
 
# 编译模型
model.compile(optimizer='sgd', loss='mean_squared_error')
 
# 训练模型
model.fit(X, Y, epochs=500, verbose=0)
 
# 测试模型
result = model.predict([10.0])
print(reuslt)
# [[18.97783]]

通过上述例子,你应该能够对TensorFlow的基本使用方法有所了解。TensorFlow提供了丰富的API,可以用于构建和训练复杂的深度学习模型。随着对TensorFlow的进一步学习,你将能够掌握更多高级功能,以解决实际问题。

1.1.3 PyTorch

PyTorch是由Facebook AI Research Lab开发的一个开源机器学习库。它提供了类似于NumPy的张量计算功能,且具有强大的GPU加速支持。PyTorch以其简洁的API和用户友好的设计受到广大研究人员和开发者的喜爱,特别适合于快速原型设计和研究。

1. 安装PyTorch

在开始使用之前,需要先安装PyTorch。PyTorch官方网站提供了相关的安装命令,你可以根据自己的操作系统和开发环境(包括是否需要GPU支持)选择正确的命令。例如,在大多数情况下,如果你使用的是pip且希望在CPU上运行PyTorch,那么可以使用以下命令安装PyTorch。

Shell
pip install torch
小提示

为了减少运行时的错误,推荐使用与本书代码环境一致的PyTorch 2.1.1版本进行开发。

2. 动手实践

张量是PyTorch中的基本构建块,可以将其看作高维数组或矩阵。张量支持自动梯度计算,非常适合在神经网络中使用。

创建和操作张量的示例代码如下。

Python
 
import torch
 
# 创建一个未初始化的3×2张量
x = torch.empty(3, 2)
print(x)
# tensor([[0., 0.],
#         [0., 0.],
#         [0., 0.]])
 
# 创建一个随机初始化的张量
x = torch.rand(3, 2)
print(x)
# tensor([[0.5277, 0.0190],
#         [0.5107, 0.9485],
#         [0.5214, 0.6354]])
 
# 创建一个用0填充的张量,数据类型为long
x = torch.zeros(3, 2, dtype=torch.long)
print(x)
# tensor([[0, 0],
#         [0, 0],
#         [0, 0]])
 
# 直接根据数据创建张量
x = torch.tensor([[1, 2], [3, 4], [5, 6]])
print(x)
# tensor([[1, 2],
#         [3, 4],
#         [5, 6]])
 
# 张量加法
y = torch.rand(3, 2)
print(x + y)
# tensor([[1.4600, 2.7211],
#         [3.6706, 4.3424],
#         [5.8336, 6.1341]])
 
# 使用torch.add进行加法运算
result = torch.empty(3, 2)
torch.add(x, y, out=result)
print(result)
# tensor([[1.4600, 2.7211],
#         [3.6706, 4.3424],
#         [5.8336, 6.1341]])

在训练神经网络时,反向传播算法用于自动计算模型参数的梯度。在PyTorch中,autograd包提供了这项功能。当使用张量进行相关操作时,可以通过设置requires_grad为True以跟踪对张量的所有操作。

以下是autograd包的一个简单示例。

Python
 
import torch
 
# 创建张量并设置requires_grad为True以跟踪对张量的所有操作
x = torch.ones(2, 2, requires_grad=True)
print(x)
# tensor([[1., 1.],
#         [1., 1.]], requires_grad=True)
 
# 对张量进行操作
y = x + 2
print(y)
# tensor([[3., 3.],
#         [3., 3.]], grad_fn=<AddBackward0>)
 
# 因为y是操作的结果,所以它有grad_fn属性
print(y.grad_fn)
# <AddBackward0 object at 0x104bc6e50>
 
# 对y进行更多操作
z = y * y * 3
out = z.mean()
print(z, out)
# tensor([[27., 27.],
#         [27., 27.]], grad_fn=<MulBackward0>) tensor(27., grad_fn=<MeanBackward0>)
 
# 计算梯度
out.backward()
# 打印梯度d(out)/dx
print(x.grad)
# tensor([[4.5000, 4.5000],
#         [4.5000, 4.5000]])

3. 构建神经网络

在PyTorch中,torch.nn包负责构建神经网络。nn.Module是所有神经网络模块的基类,你的模型也应该继承这个类。

以下是一个简单的前馈神经网络的实现,其中包含一个隐藏层。

Python
import torch
import torch.nn as nn
import torch.nn.functional as F
 
class Net(nn.Module):
 
    def __init__(self):
        super(Net, self).__init__()
        # 包含1个输入图像通道、6个输出通道的3×3的卷积核
        self.conv1 = nn.Conv2d(1, 6, 3)
        self.conv2 = nn.Conv2d(6, 16, 3)
        # 仿射变换:y=Wx+b
        self.fc1 = nn.Linear(16 * 6 * 6, 120)  # 6*6来自图像维度
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)
 
    def forward(self, x):
        # 最大池化窗口(2, 2)
        x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
        x = F.max_pool2d(F.relu(self.conv2(x)), 2)
        x = torch.flatten(x, 1)  # 除了批量维度以外展平所有维度
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x
 
net = Net()
print(net)

PyTorch提供了丰富的API和灵活的设计理念,非常适合进行科学研究和原型设计。目前它是整个AI技术框架中非常流行的一个框架。

1.1.4 Hugging Face

Hugging Face是在自然语言处理(Natural Language Processing,NLP)领域一个广受欢迎的开源组织。它提供了大量的预训练模型和工具,可以辅助研究人员和开发者在文本处理、生成、理解等任务上取得突破。transformers库是Hugging Face推出的一个核心产品,其中包含多种基于Transformer架构的模型实现,如BERT、GPT、XLNet、T5等,且支持超过100种语言的文本处理任务。

1. 安装transformers库

在开始使用之前,首先安装transformers库。可以通过如下pip命令轻松完成安装。

Shell
pip install transformers==4.30.2
小提示

为了减少运行时的错误,推荐使用与本书代码环境一致的transformers 4.30.2版本进行开发。

2. 使用transformers库进行文本分类

这里以一个简单的文本分类任务为例介绍如何使用transformers库。假定我们的目标是判断一段文本的情感倾向(如正面或负面)。

1)加载预训练模型及其分词器

首先,导入必要的库并加载模型及其分词器。示例代码如下。

Python
from transformers import pipeline
 
# 加载pipeline,指定任务为sentiment-analysis
classifier = pipeline('sentiment-analysis')

这里使用的pipeline(管道)是transformers库提供的一个高级接口,允许用户快速部署模型到具体的NLP任务上,如文本分类、文本生成、问答等。

2)对文本进行分类

接下来,可以直接对输入的文本进行情感分析。示例代码如下。

Python
result = classifier("I love using transformers. It's so easy and powerful!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]

这表示模型将输入的文本判断为正面情感,置信度接近100%。

Hugging Face的transformers库为NLP领域提供了强大而灵活的工具,它不仅包含丰富的预训练模型,还提供易用的API,这使开发者可以快速将最新的NLP技术应用到实际项目中。无论是进行基础的文本分类、问答,还是复杂的文本生成任务,transformers库都能提供便捷的支持。

1.1.5 扩展阅读

对于想要深入学习Python、TensorFlow、PyTorch以及Hugging Face的读者,以下资源可以极大地帮助你扩展知识和技能。这些建议的阅读材料和网站会为你提供从基础到高级的内容,确保你能够全面理解这些工具和库。

1. Python

《Python核心编程》详细介绍了Python的核心概念,适合初学者和中级程序员。

《流畅的Python》深入浅出地讲解了Python高级用法,强烈推荐给有一定Python经验的开发者。

官方Python文档的内容深入浅出,是学习Python不可多得的免费资源。

2. TensorFlow

《TensorFlow:实战Google深度学习框架》覆盖TensorFlow的基础与进阶应用,非常适合系统学习。

TensorFlow官方文档详尽地介绍了TensorFlow的所有特性。

由吴恩达和他的团队设计的TensorFlow实践课程,其中集合了TensorFlow在实践中的应用。

3. PyTorch

《PyTorch深度学习实战》通过实例教授PyTorch的基础和高级知识点,适合各层次读者。

PyTorch官方文档提供了大量示例代码和实践指南,适合新手迅速上手。

“60分钟上手使用PyTorch进行深度学习”项目可以帮助新手快速入门,其内容涵盖PyTorch的基本概念。

4. Hugging Face

“Transformer模型实战”探索了Hugging Face生态系统,并以项目为导向介绍Transformer模型。

Hugging Face官方文档包含使用transformers库的详细指南和API文档。

Hugging Face的transformers库课程是免费的在线课程,内容覆盖从基础到高级的transformers库知识。

以上资源除了介绍基础内容以外,还深入阐释了一些复杂的主题,可以帮助读者打下坚实的技术基础。 7WpWU70m9VuZ4vV+d2V3aLuTeshZT3wiZPXLkHSY2NuP/34ww9M6EE9rg87d+CDS

点击中间区域
呼出菜单
上一章
目录
下一章
×