phi-3_pytorch小型语言多轮对话模型(SLM)

Phi-3

论文

Phi-3 Technical Report: A Highly Capable Language Model Locally on Your Phone

模型结构

基于transformer结构

算法原理

Phi-3 模型是目前功能最强大、性价比最高的小型语言模型 (SLM),在各种语言、推理、编码和数学基准测试中,其表现优于同等规模和下一个规模的模型。此版本扩大了客户的高质量模型选择范围,为他们编写和构建生成式 AI 应用程序提供了更多实用选择。

环境配置

-v 路径、docker_name和imageID根据实际情况修改

Docker(方法一)

docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10

docker run -it --network=host --privileged=true --name=docker_name --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=32G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro imageID /bin/bash

cd /your_code_path/phi-3_pytorch
pip install -r requirements.txt

Dockerfile(方法二)

cd ./docker
docker build --no-cache -t phi-3:latest .

docker run -it --network=host --privileged=true --name=docker_name --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=32G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro imageID /bin/bash

cd /your_code_path/phi-3_pytorch
pip install -r requirements.txt

Anaconda(方法三)

关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装。

DTK驱动:dtk24.04.1
python:3.10
torch:2.1
vllm: 0.3.3

Tips:以上dtk驱动、python等DCU相关工具版本需要严格一一对应

其它非深度学习库参照requirements.txt安装:

pip install -r requirements.txt

数据集

暂无

训练

暂无

推理

# 指定显卡
export HIP_VISIBLE_DEVICES=0

python inference.py --model_path /path/of/model

result

精度

暂无

应用场景

算法类别

多轮对话

热点应用行业

家居,教育,科研

预训练权重

源码仓库及问题反馈

参考资料

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
non-local代码是PyTorch中的一种实现非局部操作的方法。非局部操作是一种在计算机视觉和自然语言处理中广泛使用的技术,用于捕捉全局上下文信息。 在PyTorch中,可以使用nn.NonLocalBlock2d模块来实现非局部操作。该模块接受输入张量,并返回一个经过非局部操作后的张量。 以下是一个使用nn.NonLocalBlock2d模块实现非局部操作的示例代码: ``` import torch import torch.nn as nn class NonLocalBlock(nn.Module): def __init__(self, in_channels): super(NonLocalBlock, self).__init__() self.in_channels = in_channels self.theta = nn.Conv2d(in_channels, in_channels // 2, kernel_size=1, stride=1, padding=0) self.phi = nn.Conv2d(in_channels, in_channels // 2, kernel_size=1, stride=1, padding=0) self.g = nn.Conv2d(in_channels, in_channels // 2, kernel_size=1, stride=1, padding=0) self.out = nn.Conv2d(in_channels // 2, in_channels, kernel_size=1, stride=1, padding=0) def forward(self, x): batch_size, channels, height, width = x.size() theta = self.theta(x).view(batch_size, self.in_channels // 2, height * width).permute(0, 2, 1) phi = self.phi(x).view(batch_size, self.in_channels // 2, height * width) g = self.g(x).view(batch_size, self.in_channels // 2, height * width).permute(0, 2, 1) f = torch.matmul(theta, phi) f = f.softmax(dim=-1) y = torch.matmul(f, g) y = y.permute(0, 2, 1).contiguous().view(batch_size, self.in_channels // 2, height, width) out = self.out(y) out = out + x return out ``` 在这个代码中,我们定义了一个名为NonLocalBlock的类,它继承自nn.Module。在类的构造函数中,我们定义了四个卷积层,分别用于计算theta、phi、g和输出。在forward方法中,我们首先将输入张量x分别传递给theta、phi和g卷积层,然后使用torch.matmul函数计算f矩阵,该矩阵用于计算非局部响应。最后,我们将计算出的y张量传递给输出卷积层,并将其与输入张量x相加,以获得最终的非局部响应。 这是一个简单的示例,用于说明如何在PyTorch中实现非局部操作。当然,实际应用中可能需要更复杂的模型和更高效的实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值