大模型基本概念学习 - Checkpoint、PyTorch、 TensorFlow、Transformers、ModelScope

文章目录

  • 前言
  • 一、checkpoint
  • 二、TensorFlow
    • 1. 简介
    • 2. 主要特点
    • 3. 示例代码
  • 三、 PyTorch
    • 1. 简介
    • 2. 主要特点
    • 3. 示例代码
  • 四、TensorFlow和PyTorch区别
  • 五、Transformers
  • 六、Transformers通过配置或自动检测来决定使用 PyTorch 或 TensorFlow
    • 1. 自动检测
    • 2. 通过环境变量配置
    • 3. 在代码中指定框架
    • 4. 使用特定框架的模型类
    • 5. 通过 `transformers` 的 `Trainer` 和 `TFTrainer`
  • 七、Transformers、PyTorch、Checkpoint层级关系梳理
    • 1. 使用 Transformers 库加载预训练模型
    • 2. 使用 PyTorch 进行模型的训练和推理
    • 3. 保存和加载模型 checkpoint
    • 4. 层级关系总结
  • 八、ModelScope
    • 1. ModelScope 和 Transformers 的比较
    • 2. ModelScope 的核心功能
    • 3. 使用 ModelScope 的示例
    • 4. 使用 Transformers 的示例
    • 5. 总结


前言

之前学习的过程中我们的模型应用可以跑起来了,那么在这个过程中我们是按官方的demo来学习编写的,有些地方只会用,但是并没有深入理解。现在我们一起来学习一些大数据的基础概念,Checkpoint、PyTorch、 Transformers、ModelScope

一、checkpoint

在大模型(如深度学习模型)中,checkpoint 是指在训练过程中保存模型当前状态的快照。它通常包含模型的权重、优化器的状态以及其他训练相关的参数。这些 checkpoint 的主要作用如下:

  1. 保存中间结果:在长时间训练模型时,定期保存 checkpoint 以防止由于中断(如停电、计算机崩溃等)而丢失训练进度。这样可以从最近一次保存的 checkpoint 继续训练,而不必从头开始。

  2. 模型评估:在训练过程中,可能会定期对模型进行评估,使用 checkpoint 可以方便地在不同的时间点加载模型,并进行验证或测试。

  3. 实验管理:在进行模型调优和实验时,可以保存多个 checkpoint,以便回顾和比较不同实验条件下的模型性能。

  4. 部署:训练完成后,最终的 checkpoint 通常会被用来部署模型。在生产环境中,使用保存的 checkpoint 来进行推理和预测。

所以,我们下载使用的大模型通常就是一个 checkpoint。它包含了训练好的模型的参数和状态,用户可以直接加载并使用这些模型,而无需重新进行训练。这对于实际应用非常有用,尤其是当训练一个大型模型需要大量的计算资源和时间时。

具体来说,当你下载并使用一个预训练的大模型时,你通常会得到以下几种文件:

  1. 模型权重文件:这个文件保存了模型的参数(如神经网络的权重和偏置)。在 TensorFlow 中,这通常是 .ckpt 文件;在 PyTorch 中,这通常是 .pt.pth 文件。

  2. 模型配置文件:这个文件描述了模型的架构(如每一层的类型、层数、激活函数等)。在一些框架中,模型配置可能包含在 checkpoint 文件中,或者作为一个单独的 JSON 或 YAML 文件。

  3. 其他相关文件:一些模型可能还包含额外的信息,如训练过程中使用的词汇表(对于自然语言处理模型)、模型的超参数设置等。

二、TensorFlow

1. 简介

TensorFlow 是由 Google Brain 团队开发的开源深度学习框架。自 2015 年发布以来,它已经成为机器学习和深度学习社区中广泛使用的工具之一。TensorFlow 适用于从研究到生产的广泛应用场景,并支持多种编程语言。

2. 主要特点

1) 计算图(Computation Graph):TensorFlow 最初是以静态计算图为基础的,这意味着在模型执行之前,需要先定义整个计算图。这种方法在优化和部署方面有优势,但调试和开发速度较慢。

2) Eager Execution:自 TensorFlow 2.0 起,默认启用了 Eager Execution 模式,这种模式允许即刻运行操作,无需构建计算图,类似于 PyTorch 的动态计算图,大大简化了调试和开发。

3) 多语言支持:虽然主要使用 Python,但 TensorFlow 还支持 C++、Java、JavaScript、Go 等多种语言,特别是 TensorFlow.js 和 TensorFlow Lite,分别支持在浏览器和移动设备上运行模型。

4) 强大的生态系统:TensorFlow 拥有丰富的工具和库,如 TensorFlow Extended (TFX) 用于生产环境中的端到端机器学习平台,TensorFlow Lite 用于移动和嵌入式设备,TensorFlow.js 用于在浏览器中运行模型,Keras(现已集成到 TensorFlow 中)用于简化模型的构建和训练。

5) 广泛的社区和支持:TensorFlow 拥有庞大的用户社区和丰富的文档、教程和资源,提供了强大的社区支持。

3. 示例代码

以下是使用 TensorFlow 构建和训练一个简单的神经网络的示例:

import tensorflow as tf
from tensorflow.keras import layers, models# 构建模型
model = models.Sequential()
model.add(layers.Dense(128, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])# 加载数据
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train.reshape(-1, 784) / 255.0, x_test.reshape(-1, 784) / 255.0# 训练模型
model.fit(x_train, y_train, epochs=5)# 评估模型
model.evaluate(x_test, y_test)

三、 PyTorch

1. 简介

PyTorch 是由 Facebook 的人工智能研究团队开发的开源深度学习框架。自 2016 年发布以来,PyTorch 迅速获得了学术界和工业界的广泛认可和使用。PyTorch 以其易用性、灵活性和动态计算图的特性而著称。

2. 主要特点

1) 动态计算图(Dynamic Computation Graph):PyTorch 的计算图在运行时构建,这使得调试更加直观和方便。开发者可以使用标准的 Python 调试工具进行调试。

2) 简洁的 API:PyTorch 的 API 非常直观和易用,符合 Python 的编程风格,降低了学习门槛。

3) TorchScript:PyTorch 提供了 TorchScript 机制,可以将 PyTorch 模型转换为静态计算图,以便在生产环境中进行优化和部署。

4) 广泛的生态系统:PyTorch 拥有丰富的扩展库,如用于分布式训练的 PyTorch Lightning、用于图神经网络的 PyTorch Geometric、用于强化学习的 Stable Baselines3 等。

5) 强大的社区和支持:PyTorch 社区活跃,提供了丰富的教程、示例和文档资源,并且在学术界有广泛的应用。

3. 示例代码

以下是使用 PyTorch 构建和训练一个简单的神经网络的示例:

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms# 数据加载和预处理
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)# 构建模型
class SimpleNN(nn.Module):def __init__(self):super(SimpleNN, self).__init__()self.fc1 = nn.Linear(784, 128)self.fc2 = nn.Linear(128, 10)def forward(self, x):x = x.view(-1, 784)x = torch.relu(self.fc1(x))x = self.fc2(x)return xmodel = SimpleNN()# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)# 训练模型
for epoch in range(5):for images, labels in train_loader:outputs = model(images)loss = criterion(outputs, labels)optimizer.zero_grad()loss.backward()optimizer.step()print(f'Epoch {epoch+1}, Loss: {loss.item()}')# 评估模型
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform)
test_loader = torch.utils.data.DataLoader(dataset=test_dataset, batch_size=1000, shuffle=False)
model.eval()
correct = 0
total = 0
with torch.no_grad():for images, labels in test_loader:outputs = model(images)_, predicted = torch.max(outputs.data, 1)total += labels.size(0)correct += (predicted == labels).sum().item()print(f'Accuracy: {100 * correct / total}%')

四、TensorFlow和PyTorch区别

  • TensorFlow:更适合于从研究到生产环境的广泛应用,具有强大的工具和生态系统支持,适合需要多语言支持和大规模分布式训练的应用场景。
  • PyTorch:以其动态计算图、简洁的 API 和强大的社区支持而著称,适合快速原型开发、实验和学术研究,近年来在工业界的应用也越来越广泛。

两者都有各自的优点和应用场景,选择哪一个主要取决于具体的需求和开发者的偏好。

五、Transformers

Transformers 是一种深度学习模型架构,最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出。这种架构在自然语言处理(NLP)领域取得了显著的成功,并被广泛应用于各种任务,如机器翻译、文本生成、文本分类和问答系统。Transformers 的关键特性在于它使用了一种称为自注意力(self-attention)的机制,能够有效地捕捉序列数据中的长期依赖关系。

以下是 Transformers 的一些核心概念和组件:

  1. 自注意力机制:自注意力机制允许模型在处理序列的每个位置时关注序列中的其他所有位置,从而捕捉到远距离的依赖关系。它计算每个位置与其他位置之间的相关性,并根据相关性加权平均这些位置的表示。

  2. 多头注意力:通过将自注意力机制扩展为多个并行的注意力头,模型可以在不同的子空间中捕捉不同类型的依赖关系。每个头独立地执行自注意力,然后将结果连接起来。

  3. 位置编码:因为自注意力机制不包含位置信息,Transformers 通过添加位置编码来表示序列中每个位置的顺序。这些位置编码通常是固定的正弦和余弦函数。

  4. 编码器-解码器结构:最初的 Transformers 模型采用编码器-解码器结构,其中编码器将输入序列转换为一组表示,解码器使用这些表示生成输出序列。每个编码器和解码器层都由多头注意力和前馈神经网络组成。

  5. 无状态处理:与循环神经网络(RNN)不同,Transformers 不依赖于先前时间步的状态,这使得它们更容易并行化,并且在处理长序列时更高效。

以下是 Transformers 模型在 TensorFlow 和 PyTorch 中的示例代码:

使用 Hugging Face Transformers 库加载预训练模型(PyTorch 示例):

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch# 加载预训练模型和 tokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")# 编码输入文本
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")# 进行预测
with torch.no_grad():outputs = model(**inputs)# 获取预测结果
logits = outputs.logits

使用 Hugging Face Transformers 库加载预训练模型(TensorFlow 示例):

from transformers import TFAutoModelForSequenceClassification, AutoTokenizer# 加载预训练模型和 tokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = TFAutoModelForSequenceClassification.from_pretrained("bert-base-uncased")# 编码输入文本
inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")# 进行预测
outputs = model(inputs)# 获取预测结果
logits = outputs.logits

这些示例展示了如何使用 Hugging Face 的 Transformers 库来加载预训练的 Transformer 模型,并使用它们进行文本分类任务。Hugging Face 的 Transformers 库支持各种预训练模型,如 BERT、GPT、RoBERTa 等,极大地简化了在 NLP 任务中使用 Transformer 模型的过程。

六、Transformers通过配置或自动检测来决定使用 PyTorch 或 TensorFlow

Hugging Face 的 Transformers 库设计得非常灵活,可以通过配置或自动检测来决定使用 PyTorch 或 TensorFlow。这使得开发者可以轻松地在这两大深度学习框架之间切换。以下是一些关键点和方法来控制 Transformers 库使用的框架:

1. 自动检测

Hugging Face Transformers 库会自动检测你的环境中安装了哪些框架,并根据需要选择适当的框架。如果你同时安装了 PyTorch 和 TensorFlow,它会优先使用 PyTorch,但你可以通过一些简单的设置来强制使用其中一个框架。

2. 通过环境变量配置

你可以设置环境变量 USE_TORCHUSE_TF 来强制 Transformers 库使用特定的框架:

  • 强制使用 PyTorch:

    export USE_TORCH=1
    export USE_TF=0
    
  • 强制使用 TensorFlow:

    export USE_TF=1
    export USE_TORCH=0
    

3. 在代码中指定框架

在代码中,你可以通过一些函数来检查和设置使用的框架:

from transformers import (is_torch_available,is_tf_available,TFAutoModelForSequenceClassification,AutoModelForSequenceClassification
)# 检查当前环境中哪些框架可用
print("PyTorch available:", is_torch_available())
print("TensorFlow available:", is_tf_available())# 根据可用的框架加载模型
if is_torch_available():model = AutoModelForSequenceClassification.from_pretrained('bert-base-uncased')
elif is_tf_available():model = TFAutoModelForSequenceClassification.from_pretrained('bert-base-uncased')

4. 使用特定框架的模型类

Transformers 库提供了以 TF 前缀命名的 TensorFlow 专用模型类和不带前缀的 PyTorch 专用模型类。例如:

  • 使用 PyTorch 模型类:

    from transformers import BertModelmodel = BertModel.from_pretrained('bert-base-uncased')
    
  • 使用 TensorFlow 模型类:

    from transformers import TFBertModelmodel = TFBertModel.from_pretrained('bert-base-uncased')
    

5. 通过 transformersTrainerTFTrainer

Transformers 库提供了 Trainer(用于 PyTorch)和 TFTrainer(用于 TensorFlow)类,简化了训练和评估的过程:

  • 使用 PyTorch 的 Trainer

    from transformers import Trainer, TrainingArgumentstraining_args = TrainingArguments(output_dir='./results', num_train_epochs=3, per_device_train_batch_size=4)
    trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset)trainer.train()
    
  • 使用 TensorFlow 的 TFTrainer

    from transformers import TFTrainer, TFTrainingArgumentstraining_args = TFTrainingArguments(output_dir='./results', num_train_epochs=3, per_device_train_batch_size=4)
    trainer = TFTrainer(model=model, args=training_args, train_dataset=train_dataset)trainer.train()
    

通过这些方法,Hugging Face 的 Transformers 库提供了灵活的机制,让你可以方便地选择和切换使用 PyTorch 或 TensorFlow,从而更好地适应不同的项目需求和开发环境。

七、Transformers、PyTorch、Checkpoint层级关系梳理

Transformers、PyTorch、Checkpoint调用的层级关系可以表示为:

1) Transformers 库:这是由 Hugging Face 提供的高层次库,用于处理和使用各种预训练的 Transformer 模型(如 BERT、GPT、RoBERTa 等)。它提供了方便的 API 来加载、微调和使用这些模型。

2) PyTorch:这是一个深度学习框架,Transformers 库在其底层实现中使用 PyTorch 来构建和训练模型。PyTorch 提供了强大的张量运算和自动微分功能,是训练和推理深度学习模型的基础。

3) Checkpoint:这是模型的保存和加载机制。checkpoint 文件包含了模型的权重和其他训练状态。Transformers 库通过 PyTorch 的功能来保存和加载这些 checkpoint 文件,从而实现模型的持久化和恢复。

具体来说,这个层级关系可以通过以下步骤进行说明:

1. 使用 Transformers 库加载预训练模型

Transformers 库提供了简单的 API 来加载预训练模型。你可以指定使用 PyTorch 作为后端框架。

from transformers import AutoTokenizer, AutoModelForSequenceClassification# 加载预训练模型和 tokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")

2. 使用 PyTorch 进行模型的训练和推理

加载模型后,实际的训练和推理过程是由 PyTorch 完成的。PyTorch 提供了底层的操作和计算功能。

import torch# 编码输入文本
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")# 使用模型进行预测
with torch.no_grad():outputs = model(**inputs)# 获取预测结果
logits = outputs.logits

3. 保存和加载模型 checkpoint

Transformers 库利用 PyTorch 的机制来保存和加载模型 checkpoint。Checkpoint 文件包含模型的权重和其他训练状态,确保模型可以在训练中断后恢复或在不同环境中部署。

# 保存模型 checkpoint
model.save_pretrained("./model_checkpoint")# 加载模型 checkpoint
model = AutoModelForSequenceClassification.from_pretrained("./model_checkpoint")

通过这三个步骤,Transformers 库利用 PyTorch 进行模型的训练和推理,并通过 checkpoint 文件保存和加载模型状态,从而实现了高效的模型管理和应用。

4. 层级关系总结

  • Transformers:提供高层次的 API 来加载、微调和使用预训练模型。
  • PyTorch:作为底层框架,提供深度学习模型的构建、训练和推理功能。
  • Checkpoint:保存和加载模型的状态,确保模型的持久化和可重复使用。

这种层级关系确保了用户可以在高层次 API 的帮助下方便地使用强大的深度学习模型,同时底层依赖 PyTorch 的灵活性和性能,以及 checkpoint 的可靠性来管理模型的状态。

八、ModelScope

ModelScope 是阿里巴巴推出的一个开源框架,主要针对模型的管理和部署,特别是对于机器学习和深度学习模型的使用和应用。它提供了一整套解决方案来简化模型的开发、管理、部署和维护。虽然 ModelScope 和 Hugging Face 的 Transformers 库在某些方面有相似之处(如都支持预训练模型的加载和使用),但它们的功能和设计目标存在一些差异。

1. ModelScope 和 Transformers 的比较

共同点:

1) 预训练模型支持:两者都提供了大量的预训练模型,用户可以方便地加载和使用这些模型进行各种任务。
2) 高层次 API:两者都提供高层次的 API,简化了模型的加载、推理和微调过程。
3) 社区驱动:两者都鼓励社区贡献和使用,拥有丰富的模型和文档支持。

不同点

1) 功能范围

  • Transformers:专注于自然语言处理(NLP)任务,提供了大量的 NLP 预训练模型(如 BERT、GPT、RoBERTa 等),以及与这些模型相关的工具和方法。
  • ModelScope:不仅支持 NLP 任务,还覆盖了计算机视觉、语音识别、推荐系统等多个领域,提供了更加广泛的模型和工具。

2) 平台集成

  • Transformers:主要集成在 Hugging Face 生态系统中,支持 PyTorch 和 TensorFlow 等深度学习框架。
  • ModelScope:集成在阿里巴巴的生态系统中,更加强调与阿里巴巴云服务(如数据存储、计算资源、部署环境等)的集成。

3) 目标用户

  • Transformers:面向研究人员和开发者,特别是那些专注于 NLP 任务的用户。
  • ModelScope:面向更广泛的企业和开发者用户,提供从模型开发到部署的一站式解决方案。

2. ModelScope 的核心功能

1) 模型管理:支持模型的版本控制、依赖管理和配置管理,使得模型的开发和维护更加系统化和规范化。
2) 模型部署:提供多种部署选项,包括本地部署、云端部署和边缘部署,简化了模型的上线流程。
3) 模型监控:集成了监控工具,能够实时监控模型的性能和健康状态,确保模型在生产环境中的稳定运行。
4) 模型市场:类似于 Hugging Face 的模型库,ModelScope 提供了一个模型市场,用户可以共享和下载各种预训练模型。

3. 使用 ModelScope 的示例

以下是使用 ModelScope 加载和推理预训练模型的示例:

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks# 创建一个情感分析任务的pipeline
nlp_pipeline = pipeline(task=Tasks.sentiment_analysis, model='damo/nlp_bert_sentiment_analysis')# 使用pipeline进行推理
result = nlp_pipeline('I love using ModelScope!')
print(result)

4. 使用 Transformers 的示例

以下是使用 Transformers 加载和推理预训练模型的示例:

from transformers import pipeline# 创建一个情感分析任务的pipeline
nlp_pipeline = pipeline(task='sentiment-analysis', model='distilbert-base-uncased-finetuned-sst-2-english')# 使用pipeline进行推理
result = nlp_pipeline('I love using Transformers!')
print(result)

5. 总结

ModelScope 和 Hugging Face 的 Transformers 库都提供了方便的模型加载和使用功能,但它们在功能范围、平台集成和目标用户方面有一些不同。ModelScope 提供了更加全面的解决方案,涵盖了从模型开发到部署的各个环节,并支持多种类型的任务。而 Transformers 库则专注于 NLP 任务,提供了丰富的预训练模型和工具,特别适合研究人员和开发者在 NLP 领域的应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/32423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java-网络爬虫 1

Java中的网络爬虫 1. 网络爬虫的基本概念 网络爬虫(Web Crawler)是一种自动化程序,通常用于遍历网页并提取所需数据。网络爬虫广泛应用于搜索引擎、数据采集、信息监控等领域。它通过模拟浏览器的行为,访问网页、解析内容、提取…

如何识别商业电子邮件诈骗

复制此链接到微信打开阅读全部已发布文章 不要关闭它标签!我知道很少有词组比商业、电子邮件和妥协更无趣。 但这不是一篇无聊的文章:这是一篇关于电子邮件骗子的文章,根据联邦调查局的说法,他们每年通过诈骗人们赚取 260 亿美元…

AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM

导入音频,选中音频,并且点 New Multitrack Session 的图标 设计文件名和存储路径,然后点 OK 点 Essential Sound 面板点 Music (如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来) 点 Duration 展…

利用定时器1产生全双工软件串口

代码; /*《AVR专题精选》随书例程3.通信接口使用技巧项目:使用AVR定时器1和外中断实现全双工软件串口文件:softuart.c说明:软件串口驱动文件作者:邵子扬时间:2012年12月16日*/ #include "softuart.h"// 内部…

Pytorch调试出错记录

一、搭建环境: LINUX-64 1、 nvidia-smi :NVIDIA-SMI 470.63.01 Driver Version: 470.63.01 CUDA Version: 11.4 2、安装conda:下载最新版上传安装 3、安装pytorch(安装成功,但可能报错) : conda in…

软件功能测试和性能测试包括哪些测试内容?又有什么联系和区别?

软件功能测试和性能测试是保证软件质量和稳定性的重要手,无论是验证软件的功能正确性,还是评估软件在负载下的性能表现,这些测试都是必不可少的。 一、软件功能测试   软件功能测试是指对软件的各项功能进行验证和确认,确保软件…

【递归、搜索与回溯】floodfill算法一

floodfill算法一 1.floodfill算法简介2.图像渲染3.岛屿数量4.岛屿的最大面积 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.floodfill算法…

【ATU Book - i.MX8系列 - OS】NXP i.MX Linux Desktop (Ubuntu) BSP 开发环境架设

一、概述 谈论嵌入式系统的开发环境,不得不提起近年来相当实用的 Yocto 建构工具。此工具拥有极为灵活的平台扩展性,广泛的软体套件与社群支持、多平台支援整合性,能够满足开发者特定需求和多种热门的嵌入式系统架设,已成为当今顶…

实战篇:GY-906红外测温模块 + 万年历(定时器计数中断版本) -STM32篇

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

如何使用LangChain自定义agent的制作(2) - 让大模型帮我们生成sql

文章目录 前言一、 安装依赖包二、 设置数据库连接三、 扫描数据库结构四、 生成 SQL 查询五、 执行 SQL 查询六、 运行示例七、 封装成类总结 前言 前一篇文章中,我们一起写了一个agent,为了简化代码是直接传递sql的,这一篇文章我们将通过大…

第10章 启动过程组 (制定项目章程)

第10章 启动过程组 9.1制定项目章程,在第三版教材第356~360页; 文字图片音频方式 视频12 第一个知识点:主要输出 1、项目章程(重要知识点) 项目目的 为了稳定与发展公司的客户群(抽象,非具体) 可测量的项目…

仓颉语言与ArkTS互操作

在 OpenHarmony 系统上,ArkTS 具备完整广泛的生态,为复用 ArkTS 生态,仓颉支持与 ArkTS 高效跨语言互通。 仓颉-ArkTS 互操作基于仓颉 CFFI 能力,通过调用 ArkTS 运行时接口,为用户提供库级别的 ArkTS 互操作能力。 …

深入理解Netty的Pipeline机制:原理与实践详解

深入理解Netty的Pipeline机制:原理与实践详解 Netty是一个基于Java的高性能异步事件驱动的网络应用框架,广泛应用于高并发网络编程。(学习netty请参考:深入浅出Netty:高性能网络应用框架的原理与实践)Nett…

探索Agent AI智能体的未来

随着人工智能(AI)技术的飞速发展,Agent AI智能体正成为一种改变世界的新力量。这些智能体不仅在当前的技术领域中发挥着重要作用,而且在未来将以更深远的影响改变我们的生活、工作和社会结构。本文将探讨Agent AI智能体的现状、潜…

微信小程序-伪类选择器

一.伪类选择器 结构伪类常见书写方式: 第一类:找第几个孩子 1. :first-child 找第一个孩子2. :last-child 找最后一个孩子3. :nth-child(),正着找数字:写数字几就是找第几个孩子,2n或者even:找偶数2n1或者o…

“论微服务架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 论微服务架构及其应用近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐…

一个关于空格的Sql Server面试题

引子 先上题目: 回答下面sql 的输出结果 declare s1 varchar(10) declare s2 varchar(10) set s1a b set s2a b if s1s2 select true 答案是 true 那么上面的 s1 和 s2 是否相等的呢? 我们再看看下面的sql declare s1 varchar(10) declare s2 …

【建议收藏】Android中高级大厂面试源码秘籍,为你备战2021金三银四,直通大厂

首先来说下为什么要读源码,有学习源码的必要吗? 为什么要阅读源码? 关于为什么阅读和学习源码,我个人认为可能有以下几点: (一)吊打面试官,应对面试 为了找到更好的工作&#xff…

异地局域网纯软件组网如何设置?

在现代社会中,随着企业的不断扩张和分布,异地办公成为一种常见的工作模式。随之而来的是,如何实现异地局域网的组网设置成为了一个挑战。在这种情况下,采用纯软件组网方案是一种有效的解决方案。本文将介绍异地局域网纯软件组网设…