如何从头开始构建神经网络?(附教程)

AI摘要

本文介绍了如何从零开始构建神经网络。强调了理解其原理和构建过程的重要性,利用NumPy库进行数值矩阵计算。先介绍准备工作、相关概念和神经元概念,接着阐述人工神经网络工作原理,然后展示从零构建解决XOR门问题的网络,最后用深度学习框架构建AND和XOR门解决方案。

随着流行的深度学习框架的出现,如 TensorFlow、Keras、PyTorch 以及其他类似库,学习神经网络对于新手来说变得更加便捷。虽然这些框架可以让你在几分钟内解决最复杂的计算任务,但它们并不要求你理解背后所有需求的核心概念和直觉。如果你知道特定函数如何工作,并且能在代码块中准确地使用它,就可以轻松地解决大多数问题。然而,要真正理解神经网络的概念以及完整的工作流程,从零开始学习人工神经网络的工作原理是至关重要的。这些神经网络是如何解决复杂问题的呢?

对于任何对人工智能和深度学习感兴趣的人,理解神经网络的原理以及构建过程都是一项有价值的探索。尽管我们暂时不使用深度学习框架如 TensorFlow、Keras 或 PyTorch,但我们将利用 NumPy 等库来进行数值矩阵计算。通过 NumPy 数组,我们可以进行模拟深度学习效果的复杂计算,并借此理解神经网络的编程流程。借助从头开始构建的这些神经网络,我们将实现一些简单的神经网络解决方案。

准备工作

为了跟进本文,你需要具备一些 Python 编程经验,并对深度学习有初步了解。我们假设所有读者都能访问足够强大的设备以运行提供的代码。

如果你还没有合适的 GPU,建议使用GPU云服务。因为这是最快、相对低成本获得 GPU,且可以简单灵活完成配置的方式。Digital Ocean 的 GPU Droplets 提供 H100 实例,近期限时优惠仅需 2.5刀/小时,点击这里了解 GPU Droplets 更多信息。

关于如何开始使用 Python 代码,我们建议你尝试这个初学者指南,以设置你的系统并准备运行初学者教程。

先了解一些概念

神经网络是深度学习和人工智能未来中最引人入胜的话题之一。虽然“人工神经网络”一词只是受到生物神经元概念的启发,但在构建这些网络时有一些明显的相似之处值得注意。就像人类神经元一样,使用人工神经网络的有趣的地方在于,我们通常可以确定它们在做什么,但很难确切知道它们是如何工作并实现目标的。尽管我们可以回答一些“xx是什么”的问题,但要完全理解模型的行为仍需进一步探索。这就是“黑盒”深度学习的来源,这个称呼适用于许多深度学习系统。不过,有许多神经网络是可解释的,使我们能够轻松地解释其目的和方法,这也取决于具体的用例。

人工智能是一个涉猎广泛的领域,而深度学习和神经网络只是其中的两个子域。在本文中,我们的主要目标是深入理解神经网络的概念,并展示如何在不使用一些知名和流行的深度学习框架的情况下从零开始构建一个架构。在深入学习如何从零实现神经网络之前,让我们直观地了解它们的工作原理。

理解神经元的概念

大多数数学运算可以通过函数连接。函数是神经网络学习几乎任何事物的最基本概念之一。无论函数具体实现什么,神经网络都可以被设计成近似该函数。这便是著名的普遍近似定理,它赋予神经网络处理各种不同挑战的能力,同时也带来了黑盒的特性。

许多现实世界的问题,如计算机视觉任务和自然语言处理任务,也可以表示为相互关联的函数。例如,通过函数,我们可以将几个输入单词映射到特定的输出单词,或将一组图像与各自的输出图像相连。数学和现实世界问题中的大多数概念都可以被重构为函数,从而框定问题并让神经网络找到适当的解决方案。

什么是人工神经网络?它是如何工作的?

人工神经网络通常被称为神经网络、神经网或 NNs。这些网络受到生物神经元的启发。需要再次强调的是,实际上,生物神经元与用于构建神经网络架构的“神经元”之间几乎没有直接关联。尽管两者的基本工作方式截然不同,但它们的共同点在于,结合在一起时,这些“神经元”可以相对容易地解决复杂任务。

为了理解神经网络的基本工作原理,线性方程“y = mx + c”是帮助理解神经网络的关键数学概念之一。方程中的“y = mx”部分帮助操控线条,获得所需的形状和数值。而另一个值,截距“c”,则通过改变在 y 轴上的位置来调整线条的位置。请参见以下两张图,以更清楚地了解此基本概念。

在神经网络中,Y=WX+B可以用来表示这个方程,Y代表输出值,w代表需要调整的权重,x代表输入值,b代表值,通过使用这个简单的逻辑,神经网络可以使用已知的信息‘b’和‘w’来确定‘x’的值。

为了更好地理解权重和偏差这一特定概念,我们可以通过如下所示的简单代码片段和结果输出来进行探索。通过一些输入值、权重和偏差,我们可以使用输入值与权重转置值的点乘积来计算输出。在得到的结果值上,再添加相应的偏差来得到所需的值。下面的示例相对简单,但足以建立基本理解。不过,在下一节和即将发布的文章中,我们将介绍更复杂的概念。

import numpy as np
inputs = [1, 2, 3, 2.5]
weights = [[ 0.2, 0.8, - 0.5, 1 ],[ 0.5, - 0.91, 0.26, - 0.5 ],[ - 0.26, - 0.27, 0.17, 0.87 ]]
biases = [2, 3, 0.5]
outputs = np.dot(weights, inputs) + biases

Or Use this methodnp.dot(inputs, weights.T) + biasesprint (outputs)

[4.8   1.21  2.385]

当神经网络组合在一起时,它们能够在反向传播的帮助下通过训练过程进行学习。第一步是前向传播,即通过使用随机权重计算每一层直到输出单元所需的信息。然而,这些随机权重通常永远不会接近完美,需要调整权重才能获得更理想的结果。因此,神经网络中的反向传播是其功能中更重要的方面之一。反向传播是操纵和调整权重的地方,通常通过比较手头的输出和预期的输出。我们将在下一节和即将发表的文章中进一步探讨这些概念。

从零开始构建神经网络

在本节中,我们将学习如何从零开始构建神经网络来解决一些任务。在开始构建神经网络之前,先了解我们要解决的问题类型。目标是构建能够理解和解决逻辑门功能的神经网络,例如 AND、OR、NOT、XOR 等逻辑门。对于这个特定示例,我们将研究如何通过从头构建神经网络来解决 XOR 门问题。

逻辑门是电子元件的基本构建块之一。选择这些逻辑门是因为每个门都基于特定的逻辑运行。例如,XOR 门仅在两个输入值不同时输出高电平;如果两个输入值相同,输出为低电平。这些逻辑通常通过真值表表示。上图展示了 XOR 门的符号和真值表表示。我们可以使用数组形式的输入和输出值来训练构建的神经网络,以获得理想结果。

首先,导入构建神经网络所需的库。在本节中,不使用任何深度学习框架,仅使用 NumPy 来简化复杂的张量和数学计算。即使没有 NumPy 库,你也可以选择手动构建神经网络,但这会耗费更多时间。本节唯一的其他库是 matplotlib,用于可视化损失并绘制模型在特定训练时期后的变化。

import numpy as np
import matplotlib.pyplot as plt

让我们描述真值表的输入和 XOR 门的预期输出。读者可以选择使用不同的门并进行相应的实验(请注意,有时你可能无法获得所需的结果)。以下是 XOR 门的输入变量和预期结果的代码片段。

a = np.array([0, 0, 1, 1])
b = np.array([0, 1, 0, 1])

# y_and = np.array([[0, 0, 0, 1]])
y_xor = np.array([[0,1,1,0]])

让我们将输入组合成一个数组实体,这样我们就有了一个总输入数组和一个输出数组供神经网络学习。这个组合过程可以通过几种方式完成。在下面的代码块中,我们使用一个列表来组合两个数组,然后将最终列表转换回 numpy 数组格式。在下一节中,我还提到了另一种组合输入数据的方法。

total_input = []

total_input = [a, b]

total_input = np.array(total_input)

得到的输入数组如下所示:

array([[0, 0, 1, 1],
       [0, 1, 0, 1]])

对于大多数神经网络问题,数组的形状是最关键的概念。形状不匹配是解决此类任务时最有可能出现的错误。因此,让我们打印并分析输入数组的形状。

(2, 4)

现在让我们定义一些从头开始构建神经网络所需的基本参数。节点的激活函数定义给定一个输入或一组输入时该节点的输出。我们将首先定义 S 型函数,这将是我们执行此任务的主要激活函数。然后,我们将继续定义一些基本参数,例如输入神经元、隐藏神经元、输出神经元的数量、总训练样本以及我们将训练神经网络的学习效率。

# Define the sigmoid activation function:
def sigmoid (x):
    return 1/(1 + np.exp(-x))

# Define the number of neurons
input_neurons, hidden_neurons, output_neurons = 2, 2, 1

# Total training examples
samples = total_input.shape[1]

# Learning rate
lr = 0.1

# Define random seed to replicate the outputs
np.random.seed(42)

下一步,我们将初始化将通过隐藏层和输出层的权重,如下面的代码片段所示。随机化权重而不是为其分配零值通常是一个好主意,因为神经网络有时可能无法学习所需的结果。

# Initializing the weights for hidden and output layers

w1 = np.random.rand(hidden_neurons, input_neurons)
w2 = np.random.rand(output_neurons, hidden_neurons)

在下一个代码块中,我们将定义神经网络模型的工作结构。首先,我们将使函数通过神经网络结构执行前向传播。我们将首先计算隐藏层中的权重和输入值,然后将它们传递给我们的 S 型激活函数。然后,我们也将对输出层执行类似的传播,其中我们将利用我们之前定义的第二个权重。随机生成的权重显然无法达到预期的结果,需要进行微调。因此,我们还将实现反向传播机制,以帮助我们的模型更有效地训练。此操作的执行方式与我们在上一节中讨论的方式类似。

# Forward propagation
def forward_prop(w1, w2, x):
    z1 = np.dot(w1, x)
    a1 = sigmoid(z1)
    z2 = np.dot(w2, a1)
    a2 = sigmoid(z2)
    return z1, a1, z2, a2

# Backward propagation
def back_prop(m, w1, w2, z1, a1, z2, a2, y):

    dz2 = a2-y
    dw2 = np.dot(dz2, a1.T)/m
    dz1 = np.dot(w2.T, dz2) * a1*(1-a1)
    dw1 = np.dot(dz1, total_input.T)/m
    dw1 = np.reshape(dw1, w1.shape)

    dw2 = np.reshape(dw2,w2.shape)
    return dz2,dw2,dz1,dw1

现在我们已经定义了前向传播和后向传播机制,可以开始训练神经网络了。让我们进行一个训练循环,运行预定义的迭代次数。首先,我们利用前向传播来获取输出值,然后将其与预期输出进行比较,开始计算相应的损失。开始执行神经网络的反向传播后,我们就可以微调权重,以接近预期的最终结果。以下是训练过程的代码块,我们还确保损失不断减少,表明神经网络正在学习如何预测所需结果,并附带相应图表。

losses = []
iterations = 10000

for i in range(iterations):
    z1, a1, z2, a2 = forward_prop(w1, w2, total_input)
    loss = -(1/samples)*np.sum(y_xor*np.log(a2)+(1-y_xor)*np.log(1-a2))
    losses.append(loss)
    da2, dw2, dz1, dw1 = back_prop(samples, w1, w2, z1, a1, z2, a2, y_xor)
    w2 = w2-lr*dw2
    w1 = w1-lr*dw1

# We plot losses to see how our network is doing
plt.plot(losses)
plt.xlabel("EPOCHS")
plt.ylabel("Loss value")

让我们定义预测函数,通过该函数我们可以利用经过训练的神经网络来计算一些预测。我们将执行前向传播并压缩获得的结果。由于我们在训练过程中对权重进行了微调,因此我们应该能够以 0.5 的阈值实现所需的结果。

# Creating the predict function

def predict(w1,w2,input):
    z1, a1, z2, a2 = forward_prop(w1,w2,test)
    a2 = np.squeeze(a2)

    if a2>=0.5:
        print("For input", [i[0] for i in input], "output is 1")
    else:
        print("For input", [i[0] for i in input], "output is 0")

现在我们已经完成了预测函数的定义,我们可以测试你构建的神经网络所做的预测,并在对模型进行约 10000 次迭代训练后查看其性能。我们将测试四种可能情况中的每一种预测结果,并将它们与 XOR 门的预期结果进行比较。

test = np.array([[0],[0]])
predict(w1,w2,test)
test = np.array([[0],[1]])
predict(w1,w2,test)
test = np.array([[1],[0]])
predict(w1,w2,test)
test = np.array([[1],[1]])
predict(w1,w2,test)

For input [0, 0] output is 0
For input [0, 1] output is 1
For input [1, 0] output is 1
For input [1, 1] output is 0

我们可以注意到,神经网络的预测结果与预期结果相似。因此可以得出结论,从零构建的神经网络成功地准确预测了 XOR 门任务。本节中的大部分代码参考了以下 GitHub 资源。如果你想要另一个学习资源,建议查看它。同时,鼓励读者通过从头构建神经网络来尝试解决不同类型的逻辑门,以探索它们的其他变体。

使用深度学习框架的构建进行比较

深度学习和人工神经网络的领域非常广阔。虽然可以从头开始构建神经网络来解决复杂的问题,但由于需要大量的时间以及需要构建的网络的固有复杂性,这通常是不可行的。因此,我们使用深度学习框架(如 TensorFlow、PyTorch、MXNet、Caffe 和其他类似的库(或工具))来设计、训练和验证神经网络模型。

这些深度学习框架允许开发人员和研究人员快速构建他们想要的模型来解决特定任务,而无需在复杂和不必要的细节的底层工作上投入太多。在众多可用的深度学习框架中,目前最流行的两种构建神经网络的工具是 TensorFlow 和 PyTorch。在本节中,我们将借助深度学习框架重建我们在前面几节中构建的项目。

对于这个重建项目,我将使用 TensorFlow 和 Keras 库。以下是我们用于构建神经网络以解决与门和异或门的导入列表。

import tensorflow as tf
from tensorflow import keras
import numpy as np

导入必要的库后,我们可以定义一些必需的参数,我们将利用这些参数构建神经网络来学习与门的输出。与与门类似,我们也将像上一节中那样构建异或门。首先,让我们看看与门的构造。下面是与门的输入和预期结果。与门的逻辑是,只有当两个(或所有)输入都为高时,输出才为高。否则,当任一输入为低时,输出也为低。

a = np.array([0, 0, 1, 1])
b = np.array([0, 1, 0, 1])

y_and = np.array([0, 0, 0, 1])

我们声明了输入和预期输出,就该将两个输入数组组合成一个实体了。我们可以通过几种方法来实现这一点,如上一节所述。对于此代码片段,我们将它们附加到一个包含四个单独元素的列表中,每个列表都有两个元素。组合输入元素后获得的最终数组将存储在一个新数组中。

total_input = []for i, j in zip(a, b):
    input1 = []
    input1.append(i)
    input1.append(j)
    total_input.append(input1)
total_input = np.array(total_input)

两个初始输入列表组合后得到的输入数组如下所示。

array([[0, 0],[0, 1],[1, 0],[1, 1]])

这个最终输入数组的形状如下。

(4, 2)

下一步,我们将创建训练数据及其各自的输出标签。首先,我们将创建列表来存储输入和输出的训练数据。我们完成这些元素的循环后,我们就可以将这些列表保存为数组,并使用它们进行进一步的计算和神经网络训练。

x_train = []
y_train = []for i, j in zip(total_input, y_and):
    x_train.append(i)
    y_train.append(j)
x_train = np.array(x_train)
y_train = np.array(y_train)

此类任务的训练过程非常简单。我们可以定义所需的库,即输入层、隐藏层和输出节点的密集层,最后是顺序模型,以便我们可以构建顺序类型模型来解决所需的 AND 门任务。首先,我们将定义模型的类型,然后继续添加输入层,它将按照我们之前的定义接受输入。我们有两个隐藏层,每个隐藏层有十个节点,并带有 ReLU 激活函数。最终的输出层包含一个节点的 Sigmoid 激活函数,为我们提供所需的结果。根据提供的输入,最终输出为零或一。

from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Sequential
model = Sequential()
model.add(Input(shape = x_train[0].shape))
model.add(Dense(10, activation = "relu"))
model.add(Dense(10, activation = "relu"))
model.add(Dense(1, activation = "sigmoid"))
model.summary()

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
dense (Dense)                (None, 10)                30
_________________________________________________________________
dense_1 (Dense)              (None, 10)                110
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 11
=================================================================
Total params: 151
Trainable params: 151
Non-trainable params: 0
_________________________________________________________________

上表显示了包含隐藏层和输出节点及其各自参数的顺序类型网络的摘要。现在我们已经构建了模型架构来解决所需的 AND 门任务,我们可以继续编译模型并对其进行相应的训练。我们将利用 Adam 优化器、二元交叉熵损失函数,并计算二元准确度来验证我们的模型有多准确。

model.compile(optimizer = "adam", loss = "binary_crossentropy", metrics = "binary_accuracy")

模型编译完成,让我们开始训练过程,看看模型是否能够达到预期的结果。请注意,从头开始的神经网络的损失函数和优化器等内容尚未涵盖。我们将在未来的文章中介绍这些概念。下面是训练所需模型的代码片段。

model.fit(x_train, y_train, epochs = 500)

我们将对模型进行大约 500 个时期的训练,以确保它能够按预期学习要求。由于这些门控任务的数据较少,因此模型将需要更多的训练来学习并相应地优化结果。训练完成后(大约需要几分钟),我们可以继续使用预测函数来验证获得的结果。让我们对数据集执行预测,如下面的代码片段所示。

model.predict(x_train)

array([[0.00790971],
       [0.02351646],
       [0.00969902],
       [0.93897456]], dtype=float32)

我们可以注意到,AND 门的结果与预期的差不多。对于必须为零的输出值,预测得到的结果能够预测接近零的值,而对于必须为 1 的输出值,我们得到的结果接近 1。我们还可以对这些值进行四舍五入以获得所需的结果。除了我们刚刚完成的 AND 门之外,让我们探索另一个门。

同样,对于 XOR 门,我们也可以继续遵循与 AND 门类似的工作流程。首先,我们将定义 XOR 门所需的输入。它再次是一个 2 通道输入,利用变量 a 和 b 存储输入值。y 变量将把预期的结果值存储在 NumPy 数组中。我们将以类似于本节中使用的方法组合这两个输入数组。输入组合起来,我们得到了所需的组合,我们将数据分为训练输入信息及其结果标签输出。

a = np.array([0, 0, 1, 1])
b = np.array([0, 1, 0, 1])

y_xor = np.array([0, 1, 1, 0])

total_input = []

for i, j in zip(a, b):
    input1 = []
    input1.append(i)
    input1.append(j)
    total_input.append(input1)

total_input = np.array(total_input)

x_train = []
y_train = []

for i, j in zip(total_input, y_xor):
    x_train.append(i)
    y_train.append(j)

x_train = np.array(x_train)
y_train = np.array(y_train)

我们将使用与本文本节前面类似的顺序类型架构。代码片段和模型的最终摘要如下所示:

model1 = Sequential()
model1.add(Input(shape = x_train[0].shape))
model1.add(Dense(10, activation = "relu"))
model1.add(Dense(10, activation = "relu"))
model1.add(Dense(1, activation = "sigmoid"))

model1.summary()

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
dense_3 (Dense)              (None, 10)                30
_________________________________________________________________
dense_4 (Dense)              (None, 10)                110
_________________________________________________________________
dense_5 (Dense)              (None, 1)                 11
=================================================================
Total params: 151
Trainable params: 151
Non-trainable params: 0
_________________________________________________________________

我们将定义优化器和损失函数等参数来编译模型,然后拟合模型。对于训练过程,我们将使用第二个模型和新的训练数据输入和输出进行训练。我们将对我们的模型进行一千次训练,然后获得最佳预测。由于要训练的数据样本相对较少,因此训练只需几分钟。

model1.compile(optimizer = "adam", loss = "binary_crossentropy", metrics = "binary_accuracy")

model1.fit(x_train, y_train, epochs = 1000)

让我们对训练输入数据进行预测,并查看训练过程完成后模型能够预测的输出。

model1.predict(x_train)

array([[0.01542357],[0.995468  ],[0.99343044],[0.00554709]], dtype=float32)

我们可以注意到,输出值与相应的预期结果非常准确。当预期结果为零时,值更接近零,当预期结果为一时,值更接近一。最后,让我们分别对 AND 门和 XOR 门模型的两个预测值进行四舍五入。执行此步骤将帮助我们获得预期输出所需的单个整数值。

model.predict(x_train).round()
model1.predict(x_train).round()

array([[0.],[0.],[0.],[1.]], dtype=float32)

array([[0.],[1.],[1.],[0.]], dtype=float32)

我们可以注意到,经过训练的两个模型都能够利用提供的输入生成理想的输出。即使我们的数据量较少,经过长时间的训练,该模型也能够在减少损失的情况下实现预期结果。从头开始学习神经网络所有基本知识的工作原理是相当漫长的。优化器、损失函数、各种损失函数和其他类似主题等复杂概念将在未来的关于从头构建神经网络的文章中介绍。

结论

在本文中,我们展示了从头构建神经网络的大部分基本概念。在简要介绍之后,我们探讨了理解人工神经网络工作原理所需的一些关键要素。掌握了基本概念后,我们开始使用 NumPy 从头构建神经网络,并尝试了一个可以解决 XOR 门问题的 ANN。最后,我们还学习了如何使用深度学习框架(如 TensorFlow 和 Keras)构建 AND 和 XOR 等逻辑门的解决方案。

人工神经网络 (ANN) 和深度学习带来了一场革命,使机器能够完成一些曾经被认为不可能的复杂任务。成功的人工智能和神经网络之旅从简单的感知器模型开始,逐步迈向带有 n 个隐藏层的复杂架构。随着 GPU 的普及和经济实惠的计算资源的普及,任何有兴趣学习如何创建此类模型和框架的人都可以更容易地开始。神经网络的复杂性和概念繁多,尤其是当我们尝试从零开始构建这些网络时,就像我们在本文中所做的那样。在未来的部分中,我们将进一步探索从头构建神经网络的更多基础。

当然如果你还没找到合适的 GPU,但是有希望训练大模型,欢迎尝试 Digitalocean 的

在接下来的文章中,我们将研究更多生成对抗网络的变体,例如 pix-2-pix GAN、BERT Transformer,当然还有从头构建神经网络的第二部分。在此之前,继续探索和学习新知识吧!

相关推荐

Codex 如何接入 Claude 等其它模型?使用 CC Switch 接入 FluxLane API 教程

通过本文的步骤,我们已经完成了在 macOS 上使用 CC Switch 为 Codex 桌面客户端接入 FluxLane API 的配置。你还可以在 Fluxlane 上生成多个调用不同模型的 API,然后添加到 CC Switch 中,每次选择路由不同的 API,就可以让 Codex 切换不同模型来工作。这种方式不需要修改复杂的系统配置,也不需要每次更换模型时手动编辑配置文件。通过 CC Switch 就可以统一管理 Codex 的模型。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 519

Spot GPU 与预留 GPU:AI 初创公司的实用成本指南

Spot GPU 可以显著降低灵活型训练任务和批量推理的成本。而对于稳定运行的生产工作负载,在将利用率、故障恢复和服务要求都纳入考量后,预留算力或其他可靠的算力方案可能更经济。任何一种采购模式,都不会仅凭名称就自动成为更好的选择。DigitalOcean 提供了一个明确的 H100 长期承诺价格基准。Azure 在所选区域提供了折扣幅度较大的 H100 NVL Spot 计费方案。Google Cloud 公布的 H100 Spot 折扣则低于其宣传的最高折扣幅度。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 194

不受限于 Copilot,教你在 VS Code 中接入 GPT、Claude

选择自定义接口后,VS Code 会要求填写模型提供商相关信息。Group Name(分组名称):FluxlaneAPI Key:粘贴刚刚在 Fluxlane 控制台创建的 API Key接下来,在 API 类型(API Type)中选择:Chat Completions。这里我们使用 OpenAI 兼容的 Chat Completions 接口。完成后,VS Code 会打开一个名为的配置文件,接下来需要在这个文件中填写具体的模型接口地址和模型 ID。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 607

WorkBuddy 接入自定义模型教程:接入 GPT、Claude 等大模型

在 WorkBuddy 主界面,点击底部输入框附近的模型选择器(默认显示当前模型名)。在弹出的模型列表最底部,点击“配置自定义模型你也可以从左下角头像进入“设置”,在左侧导航中选择“模型”,到达同一个配置页面。进入“模型”设置页后,点击右上角的“+ 添加模型在“提供商”下拉列表中选择最后一项“自定义 / Custom选择自定义后,接口地址、API Key、模型名称三个字段都需要手动填写。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1865

DigitalOcean 提示词缓存正式上线,Agent 上下文最高省 90%

的提示词缓存(Prompt Caching)现已正式可用,开放模型目录中所有受支持的模型均可使用,无需修改现有请求代码。缓存输入 Token 的费用最高可降低 90%,首 Token 延迟最高可降低 80%。Agent 不会每次执行任务都从头开始。每次发起新请求时,它都会在已有上下文的末尾追加上一次工具调用的结果,而这个上下文中早已包含系统提示词、工具定义、读取过的所有文件,以及此前执行的每一步操作及其结果。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 600

DigitalOcean 无服务器推理实测:六款模型的首 Token 延迟表现

你有没有遇到过这种情况:Demo 跑得好好的语音助手,一上生产就被人吐槽"反应太慢";你翻遍模型规格表,每个都说自己"低延迟",但真到用户盯着屏幕等回复的时候,谁快谁慢你心里根本没底。更麻烦的是,这种等待是没法靠猜的。你挑了三四个模型,文档都说自己快,但没人告诉你:在你实际用的提示词长度下,谁真的能一秒内开口?谁在你把文档从 500 字加到 10,000 字之后会突然变慢?谁平时看着正常,却偶尔卡上十几秒让用户以为你的产品挂了?这些恰恰是选型时最该知道的事。但市面上没有一个简单、公开的答案。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 550

AI Agent 运行环境难搭、空闲还收费?MicroVMs 正式公测

AI Agent 使用计算资源的方式,跟传统应用不一样。在一次会话中,它会写代码、跑代码、调用模型,然后等一个工具或一个人,再接着干。所以它需要的是短促、高强度的真实计算爆发。它还需要在刚刚生成的代码周围划一道硬边界,这样某个 Agent 的错误就不会扩散到宿主机或其他客户那里。这种模式并不是 Agent 独有的。传统基础设施满足不了这些需求。一台 7×24 小时开着的服务器,去跑一个每小时只忙几分钟的工作负载,意味着你要为大量空闲计算时间买单。容器启动快、密度高,但它们和邻居共享内核。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 684

Agent Droplets 服务器正式上线:为 AI Agent 提供一站式云基础设施

上周,DigitalOcean 正式开放的公测:提供托管运行时、受权限控制的 16,000 多个工具访问、无服务器推理,以及持久化的内存和存储,全部运行在同一个云平台上。开发者已经启动了数千个 Agent Session。如今,构建一个真正有用的 Agent 已经不再困难,但要把它稳定地运行起来,依然是一件麻烦事。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 412

Claude Sonnet 5.5 现已上线 DigitalOcean AI 推理云

Anthropic 最新发布的现已上线。开发者无需单独管理 Anthropic 账号或模型基础设施,即可通过 DigitalOcean API 调用该模型,而且支持国内直连,无需担心网络障碍。相比上一代 Sonnet 5,这次升级并不是简单地把模型“做得更大”。根据 Anthropic 公布的数据,Sonnet 5.5 的输出速度比 Sonnet 5。虽然每百万 Token 的单价没有变化,但完成同一项任务通常需要更少的 Token,Anthropic 测试中单任务成本最高可降低约。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1674

吞吐量 +38%:DigitalOcean 托管数据库高级版正式上线

随着业务规模不断扩大,数据库也会从一个简单的数据存储层,逐渐成为整个应用架构的核心。多年来,DigitalOcean 已帮助数千家初创企业和成长型公司轻松部署和扩展全托管的和数据库,无需承担复杂的日常运维工作。但随着访问流量快速增长、数据规模持续扩大,以及业务对可用性的要求越来越高,高增长工作负载需要更强大的数据库基础设施来支撑。正因如此,我们正式宣布 DigitalOcean 托管数据库 Advanced Edition(高级版)面向 MySQL 和 PostgreSQL 用户正式上线。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 495

DeepSeek V4.1 Flash 现已上线 DigitalOcean:更强 Agent,更低推理成本

DeepSeek 最新发布的现已上线,开发者可以直接通过调用,无需自己部署和维护 GPU 推理集群。这次的 V4.1 Flash 有点不一样。它并没有继续简单地追求“参数越大越好”,而是采用了 DeepSeek 新一代:模型总参数达到,但处理输入时只激活约,生成输出时激活约。更值得关注的是,在 DeepSeek 自己公布的测试中,这个“Flash”版本在不少 Agent 和 Coding Benchmark 上,反而超过了参数规模更大的。与此同时,它还支持。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1320

DigitalOcean vs OpenRouter:2026 年 AI 模型路由对比

当生产环境中的应用开始依赖多个模型时,模型路由就不再是一个“有更好、没有也行”的功能,而会直接影响推理成本和服务可用性。如今,这已经不是少数应用才会遇到的问题。根据,81% 的受访者预计今年需要依赖两个或更多 LLM 提供方才能保持竞争力,55% 已经至少更换过一次提供方,其中最主要的原因就是降低成本。这种变化也带来了一个单靠应用代码很难解决的基础设施问题:模型路由逻辑究竟应该作为独立的一层,附加在现有技术栈之上,还是直接运行在承载应用的基础设施内部?OpenRouter 给出的答案是“模型市场”。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1139

Kimi K3 + Claude:AI Agent 多模型路由实战

AI Agent 不同任务对模型能力的需求并不相同。本文以 Kimi K3 和 Claude 为例,介绍如何通过模型路由动态选择合适的模型,在兼顾任务质量和性能的同时,减少不必要的推理成本。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1258

Omarchy 将研发基础设施迁移至 DigitalOcean 云平台

无论是用于打包的构建服务器、用于 PR 审查的智能体运行器,还是用于 QA 测试的 Droplet,DigitalOcean 恰好拥有我们需要的一切。简直不能想象更合适的合作伙伴了!Omarchy 的流水线就是这种模式的真实案例,而 DigitalOcean 的基础设施恰好契合其需求。除了基础设施迁移之外,DigitalOcean 还将以创始企业赞助方的身份加入 Omacom 基金会——该非营利组织为 Omarchy 的基础设施及其依赖的开源项目提供资金——并将担任 Omarchy 的智能体计算提供商。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 544

RAG 的 Embedding 模型需要微调吗?什么时候值得自己训练?

什么时候该继续用现成 Embedding API,什么时候值得自己微调?本文从 Recall@10、训练数据、向量维度和长期成本出发,给出判断方法,并介绍如何用 DigitalOcean GPU 与 PostgreSQL托管数据库搭建一套更可控的 RAG 检索架构。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 280

从API到专用GPU:2026年5大适合创业团队的AI推理平台深度对比

2026 年面向初创公司的 AI 推理服务商选型指南,深度对比 DigitalOcean、Groq、Replicate、Fireworks AI、Together AI 五家平台。从冷启动、缩容至零、扩展路径等维度评估,帮你找到从原型到生产的最优解,避免增长期的昂贵迁移。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1066

GPT 6 Astra 已上线 DigitalOcean AI 推理云:AGI 时代的计算机操作模型来了

OpenAI 于 9 月 3 日正式发布的 GPT-6 Astra,现已通过 DigitalOcean正式上线。开发者无需自己部署和维护 GPU 推理集群,即可直接通过 DigitalOcean 调用这款 OpenAI 迄今为止能力最强的旗舰模型。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1069

AMD旗舰GPU仅需4美元每小时,DigitalOcean上线Spot GPU实例

DigitalOcean AMD MI350X / MI355X Spot GPU 降至 $4/小时起。价格锁定、性价比极高,适合训练、批量推理等容错任务。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 605

GLM-5.3-Flash 成本优化实战:加一个参数,推理成本直降 6.3 倍

GLM-5.3-Flash API 到底要花多少钱?本文通过 2700 次真实调用,对比 GLM-5.3-Flash、Qwen3.8-Max 与 Kimi K3 的 Token 消耗和实际成本,并实测 reasoning_effort 如何将推理费用降低 6.3 倍。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 2265

Baseten vs DigitalOcean、RunPod:7 个 AI 模型部署平台横向对比

RunPod、Modal、Replicate 和 Spheron 与 Baseten 的核心产品竞争最直接。它们提供 Dedicated 或 Flexible GPU Infrastructure,用于运行自定义或微调模型,而不是只调用一个预建的 Model Catalog Entry。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 869

GLM 5.3 已上线 DigitalOcean AI 推理云平台:Agent 任务的高性价比底座来了

GLM-5.3-Flash 已上线 DigitalOcean AI 推理云平台:3200 亿参数、每 Token 仅激活 180 亿参数,支持 100 万 Token 上下文与原生图像/视频输入。DigitalOcean 调用价格低至每百万输入 Token 0.15 美元,并支持统一 API、多模型路由与模型评估。Z.ai 最新发布的现已上线,开发者可以直接通过调用,无需自己部署和维护 GPU 推理集群。如果你之前关注过 OpenRouter 和 OpenCode 上那个没有公开身份的。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1022

25 万条数据只花 7.04 美元,LLM 批量推理到底有多省?

25 万次请求被拆分成 7 个批量推理工作,全部完成且 0 失败;99.99% 的返回结果符合 JSON Schema,模型与数据集自带产品标签的一致性达到 83.6%。最大的推理任务每个包含 40,000 次请求,完成时间为 1.4~2.2 小时,远低于 24 小时的 Completion Window。一个包含 25,000 次请求、使用 Claude 模型的批量推理任务只用了 17 分钟。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1566

面向 AI 工作负载,单核性能提升 30%:DigitalOcean v5 Droplets 云服务器正式上线

DigitalOcean 云平台正式推出。这是新一代计算实例,基于第 5 代 AMD EPYC™ 处理器打造。v5 Droplets 云服务器专为高性能工作负载设计,包括计算密集型 Agentic AI 平台、AI/ML 工具、高吞吐量音视频转码,以及高流量的分布式 Web 应用和 API。与上一代 Droplets 云服务器相比,v5 Droplets 云服务器的。同时,这也是 DigitalOcean 首次允许用户分别选择 vCPU、内存和存储容量,并只为实际选择的资源付费。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1014

DigitalOcean 推理路由器新增缓存感知能力:为什么最便宜的模型不一定最省钱

Coinbase CEO Brian Armstrong 最近提出了一个问题,也是所有正在扩大 AI 使用规模的企业都在面对的问题:当 Token 用量呈指数增长时,怎样才能让 AI 支出保持基本不变?这并不是一个假设场景,而是各行各业的企业正在真实面对的问题:限制用量确实可以帮助控制账单,但也会同时限制真正有价值的工作。更好的办法,是通过更合理的默认模型、更智能的模型选择,以及针对具体工作负载更充分地利用缓存,改善每一次请求的成本结构。现在,DigitalOcean 推理路由器正式加入缓存感知(Cache

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 216

2026 LLM 成本计算指南:Token 价格、推理费用与降本方法

根据 2026 年的调查数据,去年接近四分之三的企业都出现了 AI 成本超出预算的情况。造成这一差距的一个重要原因,就是很多团队在工作负载进入生产环境之前,没有先做好准确的 LLM 成本测算。从价格表上看,Token 定价似乎很简单,无非就是每百万 Token 几美元,但真正的成本取决于工作负载上线后到底怎么运行。真实用户的提问和模型回答,长度往往和测试阶段的几个 Sample Prompt 不一样,可能更长,也可能更短。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 1435

Qwen3.8-2.4T-A95B 部署与性能解析:DigitalOcean 无服务器推理实测

Qwen3.8-2.4T-A95B 是阿里云在 2026 年 8 月发布的旗舰级开源大语言模型。它是从 Qwen3.8-Max 旗舰模型衍生而来的开放权重纯文本版本,采用混合专家架构,总参数量 2.4 万亿,每个 Token 大约激活 950 亿参数,主要面向编程、工具调用和长周期 Agent 任务。在 DigitalOcean 上,它以纯文本输入、纯文本输出的形式提供。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 872

多模型路由怎么选?2026 年 4 款主流方案对比

多模型路由位于应用和语言模型之间,负责决定每一个进入系统的请求应该交给哪个模型处理。在构建LLM 应用时,通常不存在一个模型能够在成本、延迟、推理、编程、视觉和 Tool Calling 等所有维度同时做到最好。如果应用直接调用一个固定模型,那么无论请求简单还是复杂,都只能使用同一种模型能力和价格。应用 → 多模型路由层 → 选择模型 → 执行请求 → 返回统一响应路由层先分析 Prompt 或匹配预设规则,再从候选模型中挑选更适合当前任务的模型,把请求发送出去,并以一致格式返回结果。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 868

Qwen 3.8 已上线 DigitalOcean AI 推理云平台

阿里通义千问新一代旗舰模型现已上线,并可通过直接调用。根据官方所说,这次上线的并不是一款“小修小补”的 Qwen 模型。Qwen3.8-2.4T-A95B 采用,每次推理激活约 950 亿参数,重点面向长上下文、AI 编程以及 Agent 智能体等复杂工作负载。尤其值得注意的是,它最高支持,在代码、工具调用和智能体任务上的表现已经进入当前前沿大模型梯队,而 DigitalOcean 上的调用价格为。单看价格,Qwen 3.8 未必是市场上最便宜的选择。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 225

AI Agent 性能优化:如何用无服务器推理降低延迟、提升响应速度?

如果你已经针对自己的业务场景 Fine-tune 了模型,并且拥有自己的权重,那么就需要一个地方来部署它。第四种是。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 715

AI 应用成本怎么算?从推理费用到完整 TCO 拆解

Token 价格比较,不等于 TCO 比较。一套完整 AI 应用最终比单纯的推理账单贵多少,取决于它是怎么搭出来的。在前面的自下而上模型中,一个集中在单一平台上的 RAG 技术栈,总成本约为推理费用的1.24 倍;而完全相同的工作负载拆到两个平台之后,总成本会达到推理费用的2.9 倍。两者之间的差距全部来自计算、存储、网络、数据库、数据出站和运维成本。而这些项目,没有一个会出现在 $/百万 Token 的价格表中。$67,727/月$84,827/月(高 25%)$110,337/月。

了解关于云主机、GPU、AI、数据库托管、Kubernetes等相关技术知识,以及DigitalOcean云平台使用教程 641
上一篇: 教程:FFmpeg结合GPU实现720p至4K视频转换
下一篇: 一文学会,利用LLaMA 3.2打造能“识图断字”的个人AI助理
卓普云
卓普云 卓普云 卓普云
博客等级 码龄3年 3137粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值