解密 LLAMA2 代码:揭开语言人工智能惊奇的秘密

这篇具有很好参考价值的文章主要介绍了解密 LLAMA2 代码:揭开语言人工智能惊奇的秘密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解密 LLAMA2 代码:揭开语言人工智能惊奇的秘密

简介

在不断发展的 AI 和自然语言处理领域,深度学习模型的突破推动着机器理解和生成人类语言的能力。在这些杰出的模型中,LLAMA2 Transformer 脱颖而出,成为真正的游戏规则改变者,将语言理解和生成的可能性推向新的高度。

LLAMA2 基于 Transformer 架构,融入了先进技术和架构创新,代表了 cutting-edge 的演进。本文将深入 LLAMA2 的内部运作,揭开其理解、生成和处理自然语言文本的魔法。

我们将逐块剖析 LLAMA2 代码库,全面分解其关键组件,包括注意力机制、旋转嵌入以及用于模型并行的专用层。最后,您将深入了解 LLAMA2 的工作原理以及它在尖端语言模型领域中的独特之处。

因此,请加入我们,开启探索 LLAMA2 的旅程。我们将解码其代码,揭开其架构的神秘面纱,并挖掘使其成为自然语言理解领域先驱的创新特性。无论您是经验丰富的 AI 从业者,还是仅仅对语言 AI 的最新进展好奇,这篇文章都能为您提供扩展视野、加深对 LLAMA2 Transformer 理解的见解。

LLAMA2 Transformer 代码库:导入部分

LLAMA2 Transformer 代码库的导入部分设置了构建和训练模型所需的必要库和模块,包括:

  • PyTorch 功能: 包括神经网络构建、优化器、损失函数等,是 LLAMA2 的核心开发框架。
# Copyright (c) Meta Platforms, Inc. and affiliates.
# This software may be used and distributed according to the terms of the Llama 2 Community License Agreement.

import math
from dataclasses import dataclass
from typing import Optional, Tuple

import fairscale.nn.model_parallel.initialize as fs_init
import torch
import torch.nn.functional as F
from fairscale.nn.model_parallel.layers import (
    ColumnParallelLinear,
    ParallelEmbedding,
    RowParallelLinear,
)
from torch import nn

ModelArgs 类:定义模型参数的容器

这个代码定义了一个名为 ModelArgs 的 Python 数据类。数据类在 Python 3.7 中引入,是一种便捷的方式定义主要用于存储数据的类。在这个例子中,ModelArgs 类用于存储 LLAMA2 Transformer 模型的各种参数,方便管理和传递。

@dataclass
class ModelArgs:
    dim: int = 4096
    n_layers: int = 32
    n_heads: int = 32
    n_kv_heads: Optional[int] = None
    vocab_size: int = -1  # defined later by tokenizer
    multiple_of: int = 256  # make SwiGLU hidden layer size multiple of large power of 2
    ffn_dim_multiplier: Optional[float] = None
    norm_eps: float = 1e-5
    max_batch_size: int = 32
    max_seq_len: int = 2048

我来解释一下这个代码片段中定义的 ModelArgs 类:

  1. 类定义:

    @dataclass 标注表示这是一个数据类,方便定义以存储数据为主的类。
    class ModelArgs: 定义了一个名为 ModelArgs 的类,用于存储 LLAMA2 模型的参数。

  2. 属性(参数):

    dim: int = 4096: 模型的嵌入维度,表示每个词或字符的向量表示的维度。
    n_layers: int = 32: 模型中 Transformer 层的数量。
    n_heads: int = 32: 每个 Transformer 层中的注意力头数。
    n_kv_heads: Optional[int] = None: 可选参数,表示键值注意力头数(如果不同于 n_heads)。
    vocab_size: int = -1: 词表大小,-1表示在后续代码中定义。
    multiple_of: int = 256: 用于调整 SwiGLU 隐藏层的大小,使其为 256 的倍数。
    ffn_dim_multiplier: Optional[float] = None: 可选参数,用于调整前馈网络层的维度。
    norm_eps: float = 1e-5: LayerNorm 层中的 epsilon 值,用于防止除零错误。
    max_batch_size: int = 32: 训练时每个 batch 的最大样本数。
    max_seq_len: int = 2048: 模型可以处理的最大序列长度。

RMSNorm Class :

在 LLAMA2 Transformer 代码库中,RMSNorm 类定义了一个使用 PyTorch 实现的定制化标准化层。RMSNorm(Root Mean Square Normalization,根均方标准化)是一种在神经网络中用于稳定和缩放层内激活的标准化技术。

class RMSNorm(torch.nn.Module):
    def __init__(self, dim: int, eps: float = 1e-6):
        """
        Initialize the RMSNorm normalization layer.

        Args:
            dim (int): The dimension of the input tensor.
            eps (float, optional): A small value added to the denominator for numerical stability. Default is 1e-6.

        Attributes:
            eps (float): A small value added to the denominator for numerical stability.
            weight (nn.Parameter): Learnable scaling parameter.

        """
        super().__init__()
        self.eps = eps
        self.weight = nn.Parameter(torch.ones(dim))

    def _norm(self, x):
        """
        Apply the RMSNorm normalization to the input tensor.

        Args:
            x (torch.Tensor): The input tensor.

        Returns:
            torch.Tensor: The normalized tensor.

        """
        return x * torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps)

    def forward(self, x):
        """
        Forward pass through the RMSNorm layer.

        Args:
            x (torch.Tensor): The input tensor.

        Returns:
            torch.Tensor: The output tensor after applying RMSNorm.

        """
        output = self._norm(x.float()).type_as(x)
        return output * self.weight
RMSNorm 类详解:第 1 部分

这段代码定义了一个称为 RMSNorm 的归一化层,可用于神经网络中。它沿指定维度(dim)对输入数据进行归一化,并包含一个可学习的缩放参数(weight),以便在训练过程中将归一化适应网络的特定需求。“eps”参数用于归一化过程中的数值稳定性。

这里是一些额外的细节:

与 LayerNorm 的比较: 虽然类似于 LayerNorm,但 RMSNorm 在归一化时使用均方根 (RMS) 而不是均值,这可能提供更好的稳定性,尤其是在数据不平衡的情况下。
可学习缩放参数: weight 参数允许调整归一化激活的尺度,从而调整 RMSNorm 对后续层的影響。
数值稳定性: eps 参数是一个小常数,用于在 RMS 计算期间防止除以零。
RMSNorm 类详解:第 2 部分

第 2 部分描述了 RMSNorm 类的两个重要方法:

_norm 方法: 该方法执行实际的 RMSNorm 归一化操作,它计算输入张量的每个通道/维度的均方根 (RMS),并用该值对输入进行标准化。同时,它也应用可学习的缩放参数 (self.weight) 来调整标准化后的数据的范围。
forward 方法: 该方法将 RMSNorm 归一化集成到神经网络的前向传播中。它首先调用 _norm 方法进行归一化,然后将归一化后的输出传递给下一个层。

注意力模块详解:Transformer 的核心组件

class Attention(nn.Module):
    """Multi-head attention module."""
    def __init__(self, args: ModelArgs):
        """
        Initialize the Attention module.

        Args:
            args (ModelArgs): Model configuration parameters.

        Attributes:
            n_kv_heads (int): Number of key and value heads.
            n_local_heads (int): Number of local query heads.
            n_local_kv_heads (int): Number of local key and value heads.
            n_rep (int): Number of repetitions for local heads.
            head_dim (int): Dimension size of each attention head.
            wq (ColumnParallelLinear): Linear transformation for queries.
            wk (ColumnParallelLinear): Linear transformation for keys.
            wv (ColumnParallelLinear): Linear transformation for values.
            wo (RowParallelLinear): Linear transformation for output.
            cache_k (torch.Tensor): Cached keys for attention.
            cache_v (torch.Tensor): Cached values for attention.

        """
        super().__init__()
        self.n_kv_heads = args.n_heads if args.n_kv_heads is None else args.n_kv_heads
        model_parallel_size = fs_init.get_model_parallel_world_size()
        self.n_local_heads = args.n_heads // model_parallel_size
        self.n_local_kv_heads = self.n_kv_heads // model_parallel_size
        self.n_rep = self.n_local_heads // self.n_local_kv_heads
        self.head_dim = args.dim // args.n_heads

        self.wq = ColumnParallelLinear(
            args.dim,
            args.n_heads * self.head_dim,
            bias=False,
            gather_output=False,
            init_method=lambda x: x,
        )
        self.wk = ColumnParallelLinear(
            args.dim,
            self.n_kv_heads * self.head_dim,
            bias=False,
            gather_output=False,
            init_method=lambda x: x,
        )
        self.wv = ColumnParallelLinear(
            args.dim,
            self.n_kv_heads * self.head_dim,
            bias=False,
            gather_output=False,
            init_method=lambda x: x,
        )
        self.wo = RowParallelLinear(
            args.n_heads * self.head_dim,
            args.dim,
            bias=False,
            input_is_parallel=True,
            init_method=lambda x: x,
        )

        self.cache_k = torch.zeros(
            (
                args.max_batch_size,
                args.max_seq_len,
                self.n_local_kv_heads,
                self.head_dim,
            )
        ).cuda()
        self.cache_v = torch.zeros(
            (
                args.max_batch_size,
                args.max_seq_len,
                self.n_local_kv_heads,
                self.head_dim,
            )
        ).cuda()

    def forward(
        self,
        x: torch.Tensor,
        start_pos: int,
        freqs_cis: torch.Tensor,
        mask: Optional[torch.Tensor],
    ):
        """
        Forward pass of the attention module.

        Args:
            x (torch.Tensor): Input tensor.
            start_pos (int): Starting position for caching.
            freqs_cis (torch.Tensor): Precomputed frequency tensor.
            mask (torch.Tensor, optional): Attention mask tensor.

        Returns:
            torch.Tensor: Output tensor after attention.

        """
        bsz, seqlen, _ = x.shape
        xq, xk, xv = self.wq(x), self.wk(x), self.wv(x)

        xq = xq.view(bsz, seqlen, self.n_local_heads, self.head_dim)
        xk = xk.view(bsz, seqlen, self.n_local_kv_heads, self.head_dim)
        xv = xv.view(bsz, seqlen, self.n_local_kv_heads, self.head_dim)

        xq, xk = apply_rotary_emb(xq, xk, freqs_cis=freqs_cis)

        self.cache_k = self.cache_k.to(xq)
        self.cache_v = self.cache_v.to(xq)

        self.cache_k[:bsz, start_pos : start_pos + seqlen] = xk
        self.cache_v[:bsz, start_pos : start_pos + seqlen] = xv

        keys = self.cache_k[:bsz, : start_pos + seqlen]
        values = self.cache_v[:bsz, : start_pos + seqlen]

        # repeat k/v heads if n_kv_heads < n_heads
        keys = repeat_kv(keys, self.n_rep)  # (bs, seqlen, n_local_heads, head_dim)
        values = repeat_kv(values, self.n_rep)  # (bs, seqlen, n_local_heads, head_dim)

        xq = xq.transpose(1, 2)  # (bs, n_local_heads, seqlen, head_dim)
        keys = keys.transpose(1, 2)
        values = values.transpose(1, 2)
        scores = torch.matmul(xq, keys.transpose(2, 3)) / math.sqrt(self.head_dim)
        if mask is not None:
            scores = scores + mask  # (bs, n_local_heads, seqlen, cache_len + seqlen)
        scores = F.softmax(scores.float(), dim=-1).type_as(xq)
        output = torch.matmul(scores, values)  # (bs, n_local_heads, seqlen, head_dim)
        output = output.transpose(1, 2).contiguous().view(bsz, seqlen, -1)
        return self.wo(output)

  1. 多头注意力:

    注意力模块的核心是 “多头注意力” 机制。它允许模型关注输入序列的不同部分,并根据上下文动态地分配权重。
    该模块使用多个并行的 “注意力头”,每个头学习不同的关注模式。这使得模型可以更好地捕捉输入序列中复杂的依赖关系。

  2. 缓存能力:

    模块能够缓存键 (key) 和值 (value) 信息,从而提高计算效率。在处理序列数据时,重复计算这些信息会带来大量开销。缓存可以避免这些重复计算,显著提升模型的性能。

  3. 旋转嵌入:

    传统的位置编码使用正弦和余弦函数来编码序列中每个元素的位置信息。
    旋转嵌入是一种替代方案,它使用线性变换将位置信息编码到键 (key) 和值 (value) 向量中。
    这种方法在并行计算环境下表现更好,并且可以避免一些正弦和余弦函数带来的数值问题。

  4. 线性变换:

    模块可以执行线性变换,将输入数据映射到更高维度的空间。
    这有助于模型学习更复杂的特征表示,从而提高其性能。

  5. 应用范围:

    注意力模块是 Transformer 架构的基础,被广泛应用于各种自然语言处理任务,例如机器翻译、文本摘要、问答系统等。
    它使模型能够捕获长距离依赖关系,并且对上下文高度敏感,从而显著提升了这些任务的性能。

前馈 (FeedForward) 模块详解:Transformer 模型的必备成分

class FeedForward(nn.Module):
    def __init__(
        self,
        dim: int,
        hidden_dim: int,
        multiple_of: int,
        ffn_dim_multiplier: Optional[float],
    ):
        """
        Initialize the FeedForward module.

        Args:
            dim (int): Input dimension.
            hidden_dim (int): Hidden dimension of the feedforward layer.
            multiple_of (int): Value to ensure hidden dimension is a multiple of this value.
            ffn_dim_multiplier (float, optional): Custom multiplier for hidden dimension. Defaults to None.

        Attributes:
            w1 (ColumnParallelLinear): Linear transformation for the first layer.
            w2 (RowParallelLinear): Linear transformation for the second layer.
            w3 (ColumnParallelLinear): Linear transformation for the third layer.

        """
        super().__init__()
        hidden_dim = int(2 * hidden_dim / 3)
        # custom dim factor multiplier
        if ffn_dim_multiplier is not None:
            hidden_dim = int(ffn_dim_multiplier * hidden_dim)
        hidden_dim = multiple_of * ((hidden_dim + multiple_of - 1) // multiple_of)

        self.w1 = ColumnParallelLinear(
            dim, hidden_dim, bias=False, gather_output=False, init_method=lambda x: x
        )
        self.w2 = RowParallelLinear(
            hidden_dim, dim, bias=False, input_is_parallel=True, init_method=lambda x: x
        )
        self.w3 = ColumnParallelLinear(
            dim, hidden_dim, bias=False, gather_output=False, init_method=lambda x: x
        )

    def forward(self, x):
        return self.w2(F.silu(self.w1(x)) * self.w3(x))
  1. 功能概述:

    前馈模块实现了一个前馈神经网络,包含两个线性变换和一个中间的 SiLU 激活函数。
    它通过这些变换和激活函数对输入数据进行非线性处理,提取更复杂的特征信息。

  2. 组成部分:

    两个线性变换: 第一个线性变换将输入数据映射到更高维度的空间,使其拥有更多的表示能力。第二个线性变换将数据映射回原始维度,输出处理后的结果。
    SiLU 激活函数: 该函数类似于 ReLU 激活函数,但具有平滑的零点,可以避免梯度消失问题,改善模型的训练性能。

  3. 应用场景:

    前馈模块常用于 Transformer 模型中,与注意力模块配合使用。
    在注意力模块之后,前馈模块可以进一步处理经过注意力机制得到的上下文信息,提取更高级的特征。
    它适用于各种自然语言处理任务,例如机器翻译、文本摘要、问答系统等。

  4. 优势:

    前馈模块可以学习非线性关系,这是注意力机制本身无法做到的。
    它可以扩展模型的表达能力,使其能够处理更复杂的语言信息。

TransformerBlock 模块:Transformer 的核心组件

class TransformerBlock(nn.Module):
    def __init__(self, layer_id: int, args: ModelArgs):
        """
        Initialize a TransformerBlock.

        Args:
            layer_id (int): Identifier for the layer.
            args (ModelArgs): Model configuration parameters.

        Attributes:
            n_heads (int): Number of attention heads.
            dim (int): Dimension size of the model.
            head_dim (int): Dimension size of each attention head.
            attention (Attention): Attention module.
            feed_forward (FeedForward): FeedForward module.
            layer_id (int): Identifier for the layer.
            attention_norm (RMSNorm): Layer normalization for attention output.
            ffn_norm (RMSNorm): Layer normalization for feedforward output.

        """
        super().__init__()
        self.n_heads = args.n_heads
        self.dim = args.dim
        self.head_dim = args.dim // args.n_heads
        self.attention = Attention(args)
        self.feed_forward = FeedForward(
            dim=args.dim,
            hidden_dim=4 * args.dim,
            multiple_of=args.multiple_of,
            ffn_dim_multiplier=args.ffn_dim_multiplier,
        )
        self.layer_id = layer_id
        self.attention_norm = RMSNorm(args.dim, eps=args.norm_eps)
        self.ffn_norm = RMSNorm(args.dim, eps=args.norm_eps)

    def forward(
        self,
        x: torch.Tensor,
        start_pos: int,
        freqs_cis: torch.Tensor,
        mask: Optional[torch.Tensor],
    ):
        """
        Perform a forward pass through the TransformerBlock.

        Args:
            x (torch.Tensor): Input tensor.
            start_pos (int): Starting position for attention caching.
            freqs_cis (torch.Tensor): Precomputed cosine and sine frequencies.
            mask (torch.Tensor, optional): Masking tensor for attention. Defaults to None.

        Returns:
            torch.Tensor: Output tensor after applying attention and feedforward layers.

        """
        h = x + self.attention.forward(
            self.attention_norm(x), start_pos, freqs_cis, mask
        )
        out = h + self.feed_forward.forward(self.ffn_norm(h))
        return out

  1. 作用:

    TransformerBlock 模块是 Transformer 模型的基本单元,包含一个注意力机制和一个前馈神经网络。
    注意力机制允许模型关注输入序列中不同部分之间的关系,并根据上下文动态分配权重。
    前馈神经网络则进一步处理经过注意力机制得到的上下文信息,提取更高级的特征。

  2. 内部结构:

    TransformerBlock 模块包含两个子模块:
    注意力模块: 实现多头注意力机制,学习输入序列中元素之间的依赖关系。
    前馈模块: 由两个线性变换和一个 SiLU 激活函数组成,对经过注意力机制处理后的数据进行非线性转换,提取更复杂的特征。

  3. 工作原理:

    输入序列首先经过注意力模块,模型学习每个元素与其它的相关性,并根据相关性分配权重。
    经过注意力模块处理后的输出再进入前馈模块,进行非线性变换,提取更复杂的特征信息。
    最后,将经过前馈模块处理后的结果与原始输入进行残差相加,并加上 LayerNorm 层进行归一化,得到最终的输出。

  4. 可重复性:

    TransformerBlock 模块可以堆叠多个,这样模型就可以从更深层次的上下文信息中学习。
    通过堆叠多个 TransformerBlock 模块,可以构建一个完整的 Transformer 模型,用于各种自然语言处理任务。

Transformer 模块:解码 LLAMA2 的核心引擎

class Transformer(nn.Module):
    def __init__(self, params: ModelArgs):
        """
        Initialize a Transformer model.

        Args:
            params (ModelArgs): Model configuration parameters.

        Attributes:
            params (ModelArgs): Model configuration parameters.
            vocab_size (int): Vocabulary size.
            n_layers (int): Number of layers in the model.
            tok_embeddings (ParallelEmbedding): Token embeddings.
            layers (torch.nn.ModuleList): List of Transformer blocks.
            norm (RMSNorm): Layer normalization for the model output.
            output (ColumnParallelLinear): Linear layer for final output.
            freqs_cis (torch.Tensor): Precomputed cosine and sine frequencies.

        """
        super().__init__()
        self.params = params
        self.vocab_size = params.vocab_size
        self.n_layers = params.n_layers

        self.tok_embeddings = ParallelEmbedding(
            params.vocab_size, params.dim, init_method=lambda x: x
        )

        self.layers = torch.nn.ModuleList()
        for layer_id in range(params.n_layers):
            self.layers.append(TransformerBlock(layer_id, params))

        self.norm = RMSNorm(params.dim, eps=params.norm_eps)
        self.output = ColumnParallelLinear(
            params.dim, params.vocab_size, bias=False, init_method=lambda x: x
        )

        self.freqs_cis = precompute_freqs_cis(
            # Note that self.params.max_seq_len is multiplied by 2 because the token limit for the Llama 2 generation of models is 4096.
            # Adding this multiplier instead of using 4096 directly allows for dynamism of token lengths while training or fine-tuning.
            self.params.dim // self.params.n_heads, self.params.max_seq_len * 2
        )

    @torch.inference_mode()
    def forward(self, tokens: torch.Tensor, start_pos: int):
        """
        Perform a forward pass through the Transformer model.

        Args:
            tokens (torch.Tensor): Input token indices.
            start_pos (int): Starting position for attention caching.

        Returns:
            torch.Tensor: Output logits after applying the Transformer model.

        """
        _bsz, seqlen = tokens.shape
        h = self.tok_embeddings(tokens)
        self.freqs_cis = self.freqs_cis.to(h.device)
        freqs_cis = self.freqs_cis[start_pos : start_pos + seqlen]

        mask = None
        if seqlen > 1:
            mask = torch.full(
                (1, 1, seqlen, seqlen), float("-inf"), device=tokens.device
            )
            mask = torch.triu(mask, diagonal=start_pos + 1).type_as(h)

        for layer in self.layers:
            h = layer(h, start_pos, freqs_cis, mask)
        h = self.norm(h)
        output = self.output(h).float()
        return output
  1. 功能概述:

Transformer 模块代表了完整的 Transformer 模型,涵盖了三个关键部分:

词嵌入(Token Embeddings): 将输入文本中的每个词或字符转换成低维向量,为模型提供可处理的数值表示。
堆叠的 TransformerBlock 模块: 如前文所述,每个模块包含注意力机制和前馈网络,负责处理信息和提取特征。通过堆叠多个模块,模型可以从更深层次的上下文中学习。
最终输出层: 根据具体任务而定,这个层可能负责生成语言、进行分类或预测其他信息。
  1. 应用场景:

Transformer 模型用途广泛,可以应用于各种自然语言处理任务,例如:

语言建模: 学习语言的统计规律,预测下一个词或生成相似文本。
机器翻译: 将一种语言翻译成另一种语言。
文本摘要: 自动生成文本摘要。
问答系统: 回答用户提出的问题。
情感分析: 分析文本的情感倾向。
  1. LLAMA2 中的 Transformer:

LLAMA2 利用 Transformer 模块的强大功能,使其能够理解和生成人类语言。通过精心设计的架构和参数调整,LLAMA2 在各种自然语言处理任务上取得了卓越的性能。

总结

经过我们对 LLAMA2 Transformer 的深入探索,越来越清楚的是,这个模型不仅仅是自然语言理解领域的里程碑,它更是推动语言人工智能未来的催化剂。LLAMA2 革命性的架构,结合其复杂的技术,开启了广泛的应用和可能性,这些可能性曾经只存在于科幻小说中。

LLAMA2 Transformer 对人工智能领域的影响是多方面的:

前所未有的语言理解: LLAMA2 凭借其先进的注意力机制和定制层,展示了无与伦比的语言理解能力。它可以掌握上下文、语义甚至文本中细微的语调的复杂性,使其成为从情感分析到语言翻译等多种任务的宝贵资产。

高效的模型并行性: LLAMA2 利用模型并行化技术,可以轻松处理更大、更复杂的数据集。这种可扩展性在数据量不断飙升的时代至关重要,LLAMA2 很好地应对挑战,为模型性能设定了新的标准。

鲁棒性和适应性: 通过旋转嵌入和专用层的加入,LLAMA2 在各个领域和语言中表现出卓越的鲁棒性和适应性。它可以轻松适应新任务和领域,减少了大量微调的需要。

动态性的承诺: LLAMA2 在模型设计中引入了动态性的概念,在令牌长度上提供灵活性,并适应不同的文本输入。这个特性证明了模型的实用性和用户友好性。

展望未来,LLAMA2 代表着迈向更强大的人工智能模型的垫脚石。它的蓝图激励研究人员和工程师们进一步拓展可能性的边界,努力创造能够以前所未有的方式真正理解和与人类语言进行交互的模型。

总之,LLAMA2 不仅仅是一个模型;它证明了人工智能领域取得的巨大进步,并将继续取得进步。它是我们努力创造能够以最人性化的方式理解和与我们对话的机器的象征。LLAMA2 使得语言人工智能的未来更加光明,可能性无限。文章来源地址https://www.toymoban.com/news/detail-832082.html

到了这里,关于解密 LLAMA2 代码:揭开语言人工智能惊奇的秘密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows11下私有化部署大语言模型实战 langchain+llama2

    CPU:锐龙5600X 显卡:GTX3070 内存:32G 注:硬件配置仅为博主的配置,不是最低要求配置,也不是推荐配置。该配置下计算速度约为40tokens/s。实测核显笔记本(i7-1165g7)也能跑,速度3tokens/s。 Windows系统版本:Win11专业版23H2 Python版本:3.11 Cuda版本:12.3.2 VS版本:VS2022 17.8.3 lan

    2024年02月03日
    浏览(224)
  • 如何让 Llama2、通义千问开源大语言模型快速跑在函数计算上?

    :::info 本文是“在Serverless平台上构建AIGC应用”系列文章的第一篇文章。 ::: 随着ChatGPT 以及 Stable Diffusion,Midjourney 这些新生代 AIGC 应用的兴起,围绕AIGC应用的相关开发变得越来越广泛,有呈井喷之势,从长远看这波应用的爆发不仅仅是停留在形式之上,更是在各个领域产生实

    2024年02月09日
    浏览(50)
  • 入门人工智能 —— 学习一门编程语言 python 基础代码编写和运算符介绍(1)

    随着人工智能技术的快速发展,越来越多的年轻人开始关注这个领域。作为入门者,学习人工智能编程语言至关重要。这里将介绍人工智能编程语言Python的基础知识,帮助初学者更好地理解人工智能领域的基本概念和技术。 下面是一些入门 Python 编程语言的基本知识: 安装

    2024年02月09日
    浏览(66)
  • 两款顶尖大语言模型Claude2.1和Llama2在Amazon Bedrock正式可用

    在亚马逊云科技2023 re:Invent美国拉斯维加斯现场,亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian宣布了众多在生成式AI领域的发布和创新,其中就包括Anthropic Claude 2.1和Meta Llama 2 70B两款大语言模型已在Amazon Bedrock正式可用。 亚马逊云科技数据和人工智能副总裁Swami Sivas

    2024年02月04日
    浏览(55)
  • [玩转AIGC]如何训练LLaMA2(模型训练、推理、代码讲解,并附可直接运行的kaggle连接)

    Llama 2,基于优化的 Transformer 架构,是Meta AI正式发布的最新一代开源大模型,一系列模型(7b、13b、70b)均开源可商用,效果直逼gpt3.5。 下面我们来介绍如何使用Llama 2来训练一个故事生成模型。 如果迫不及待想爽一把先,请直接跳到这里,可直接运行:llama2-c, 学习不就是

    2024年02月12日
    浏览(51)
  • 解密人工智能:线性回归 | 逻辑回归 | SVM

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 机器学习算法是一种基于数据和经验的算法,通过对大量数据的学习和分析,自动发现数据中的模式、规律和关联,并利用这些模式和规律来进行预测、分类或优化

    2024年01月20日
    浏览(54)
  • 解密人工智能:如何模仿人类大脑处理信息

    人工智能(Artificial Intelligence,AI)是一门研究如何让计算机模拟人类智能的学科。人类智能包括学习、理解语言、推理、认知、计划、视觉、语音等多种能力。人工智能的目标是让计算机具备这些能力,并且能够与人类相互作用。 人工智能的研究历史可以追溯到1950年代,当时

    2024年02月22日
    浏览(80)
  • 使用 Meta Llama 3 构建人工智能的未来

    使用 Meta Llama 3 构建人工智能的未来 现在提供 8B 和 70B 预训练和指令调整版本,以支持广泛的应用 我们已将 Llama 3 集成到我们的智能助手 Meta AI 中,它扩展了人们完成工作、创造和与 Meta AI 联系的方式。通过使用 Meta AI 进行编码任务和解决问题,您可以亲眼目睹 Llama 3 的性能

    2024年04月27日
    浏览(42)
  • 解密人工智能:决策树 | 随机森林 | 朴素贝叶斯

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 机器学习算法是一种基于数据和经验的算法,通过对大量数据的学习和分析,自动发现数据中的模式、规律和关联,并利用这些模式和规律来进行预测、分类或优化

    2024年01月21日
    浏览(58)
  • 【AI人工智能】 最强大的语言模型镜像 使用起来真的太方便了! 真的要解放代码思维了吗?

    🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞👍🏻 收藏 📂加关注 前言 🍉 AI 在某些基础应用领域可以帮助你减少很多工作量,很强大哦! 嘿嘿 优

    2024年02月10日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包