DeepSeek渣机部署编程用的模型,边缘设备部署模型

DeepSeek渣机部署编程用的模型,边缘设备部署模型


文章目录

  • DeepSeek渣机部署编程用的模型,边缘设备部署模型
  • 前言
  • 一、python代码
  • 二、构建一个简单的前端来接入接口
    • 2.读入数据
  • 总结


前言

也许大家伙都想完成一些部署DeepSeek的东西,不过部署并不难,只是环境难而已,首先如果不想用GPU跑的话,那就代码随便复制去运行都行,环境的话,我用Docker部署出来的环境,可以看我这篇博客DeepSeek部署WSL版,这篇博客其实只是为DeepSeek部署了一个环境而已,我个没云资源的人怎么可能部署的了这样的大模型,除非,给我几台服务器,我分布式技术还是可以的,运用资源还是强的。


一、python代码

下面这个代码只是把接口在本地6780打开
访问本地127.0.0.1:6780/chat就行,而且这个接口我写的并不是说非常严谨,并且模型需要下载对于的结构文件和参数权重,如果说想改成每一个人都有记录,那得接入数据库,不然不好弄,而且我建议拿个1.3B的模型自己去训练一个用自己文本训练的模型,可以满足一些微小的业务了哈哈哈。

from typing import List, Dict
from fastapi import FastAPI
from transformers import AutoTokenizer, AutoModel
from fastapi.middleware.cors import CORSMiddleware
import torch
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-coder-1.3b-instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("deepseek-ai/deepseek-coder-1.3b-instruct", trust_remote_code=True, torch_dtype=torch.bfloat16).cuda()
model = model.to('cuda')
model = model.eval()
messages = []app = FastAPI()
app.add_middleware(CORSMiddleware,allow_origins=["*"],  # 允许所有来源allow_credentials=True,allow_methods=["*"],  # 允许所有请求方法allow_headers=["*"],  # 允许所有请求头
)
@app.post("/chat")
async def chat(user_input: str):user_input = {'role': 'user', 'content': user_input}messages.append(user_input)try:# 调用模型进行对话inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)# tokenizer.eos_token_id is the id of <|EOT|> tokenoutputs = model.generate(inputs,max_new_tokens=2048, do_sample=False, top_k=50, top_p=0.95,num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)response=tokenizer.decode(outputs[0][len(inputs[0]):], skip_special_tokens=True)print(messages)# response, history = generate_response(user_input, history=history)return {"response": response,}except Exception as e:return {"error": f"Failed to generate response: {str(e)}"}if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=6708)

二、构建一个简单的前端来接入接口

前端兄弟写的代码,简单的扒了下KIMI的前端,如果侵权了请告知,里面的图片要自己去改改,自定义就行,这个代码直接运行肯定会报错的,因为图片文件没得

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><link rel="icon" href="./images/icon.png" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>你好 - chat</title><link rel="stylesheet" href="./index.css" /><script src="./axios/axios.js"></script></head><body><main class="main"><div class="main-tip"><div class="main-tip-txt">问候~</div></div><div class="main-list" id="message-list"><!-- 消息列表将在这里动态渲染 --></div><div class="main-bottom"><inputtype="text"id="input-value"class="rounded-lg bg-gray text-black"placeholder="请输入内容..."/><button @click="sendMessage" id="send-button" class="rounded-lg"><img src="./images/send.png" alt="" /></button></div></main><script>// 获取消息列表容器const messageList = document.getElementById("message-list");// 获取输入框domconst input = document.getElementById("input-value");// 获取发送按钮const sendButton = document.getElementById("send-button");// 定义消息列表const messages = [{isUser: false,text: "Hi,很高兴遇见你!你可以随时把网址🔗或者文件📃发给我,我来帮你看看",avatar: "./images/avatar_share.png", // AI头像},];let inputValue;// 发送消息的函数const sendMessage = async () => {inputValue = input.value.trim();if (inputValue === "") return; // 如果输入为空,不发送// 加入结果数组中messages.push({isUser: true,text: inputValue,avatar: "./images/user.png", // AI头像});// 创建消息元素const messageDiv = document.createElement("div");messageDiv.className = "flex justify-end";messageDiv.id = `message-${inputValue}`;messageDiv.style.minHeight = "48px";// 创建头像const avatarImg = document.createElement("img");avatarImg.src = "./images/user.png";avatarImg.alt = "User";avatarImg.className = `avatar avatar-right`;const textDiv = document.createElement("div");textDiv.className = "rounded-lg bg-blue text-white";textDiv.textContent = inputValue;messageDiv.appendChild(textDiv);messageDiv.appendChild(avatarImg);// 将消息添加到消息列表messageList.appendChild(messageDiv);const response = await axios.post(`http://127.0.0.1:6708/chat?user_input=${inputValue}`);if (response.status === 200) {// 加入结果数组中messages.push({isUser: false,text: response.data.response,avatar: "./images/avatar_share.png", // AI头像});// 创建消息元素const messageDiv = document.createElement("div");messageDiv.className = "flex justify-start";messageDiv.id = `message-${response.data.response}`;messageDiv.style.minHeight = "48px";// 创建头像const avatarImg = document.createElement("img");avatarImg.src = "./images/avatar_share.png";avatarImg.alt = "AI";avatarImg.className = "avatar";const textDiv = document.createElement("div");textDiv.className = "rounded-lg bg-gray text-black";textDiv.textContent = response.data.response;messageDiv.appendChild(avatarImg);messageDiv.appendChild(textDiv);// 将消息添加到消息列表messageList.appendChild(messageDiv);}// 清空输入框input.value = "";inputValue = "";// 滚动到消息列表底部messageList.scrollTop = messageList.scrollHeight;};// 绑定事件sendButton.addEventListener("click", sendMessage);input.addEventListener("keyup", (event) => {if (event.key === "Enter") {sendMessage();}});messageList.innerHTML = ""; // 清空现有内容messages.forEach((msg, index) => {const messageDiv = document.createElement("div");messageDiv.className = `flex ${msg.isUser ? "justify-end" : "justify-start"}`;messageDiv.id = `message-${index}`;messageDiv.style.minHeight = "48px";// 创建头像const avatarImg = document.createElement("img");avatarImg.src = msg.avatar;avatarImg.alt = msg.isUser ? "User" : "AI";avatarImg.className = `avatar ${msg.isUser ? "avatar-right" : ""}`;const textDiv = document.createElement("div");textDiv.className = `rounded-lg ${msg.isUser ? "bg-blue text-white" : "bg-gray text-black"}`;textDiv.textContent = msg.text;// 根据消息发送者调整头像和文本的顺序if (msg.isUser) {messageDiv.appendChild(textDiv);messageDiv.appendChild(avatarImg);} else {messageDiv.appendChild(avatarImg);messageDiv.appendChild(textDiv);}messageList.appendChild(messageDiv);});</script></body>
</html>

2.读入数据

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

使用的记录
在这里插入图片描述
展示效果
请添加图片描述


总结

本次的模型过程中,知道了DeepSeek1.3BCoder的实力,并且如果超过7B的模型,那就别去弄了,至少要32GB显存,不然吃不消,然后我才16GB,虽然可以部署一个6B的模型。不过这样的模型,勉强可以完成一些简单的编程任务,其他的就别想了。
后续训练的内容,我会在后续博客里写的。1.3B的模型需要的显存是3.6GB,我已经测试过了,如果想要部署更强的模型,第一GPU显存资源达到80G,CPU内存也要多一点。

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

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

相关文章

VS2019打开《喜缺全书算法册》附带代码的方法兼述单元测试

下载地址(大量的题目和测试用例) 下载:地址一&#xff0c;几乎实时更新 GitCode下载。 下载地址二&#xff0c;不定期更新csdn打包下载 如果这两个链接打不开&#xff0c;可能是这两个资源处于审核状态&#xff0c;快则几分钟&#xff0c;慢则2天。 可以加本文末的&#xff31…

急停信号的含义

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在开发C#的运动控制程序的时候&#xff0c;一个必要的步骤就是确认设备按钮的急停…

小白学网络安全难吗?需要具备哪些条件?

作为一名零基础小白&#xff0c;想要转行IT学习一门新技术&#xff0c;且上手难度低、就业前景好、薪资待遇高、入行门槛低&#xff0c;网络安全是最值得的选择&#xff0c;掌握它之后你可以获得一份收入不错的工作。那么零基础学网络安全好学吗?以下是具体内容介绍。 首先&am…

IEEE期刊Word导出PDF注意事项

在系统上提交论文时候一般要求PDF文档&#xff0c;但是word直接转PDF可能存在一些问题&#xff1a; 部分图片不清晰。字体未嵌入PDF。间距发生了变化。字体发生了变化。一张图片显示不完全。 下面介绍word转PDF最稳妥的技巧以及如何实现全部字体的嵌入。 1. 操作流程 ① 另…

CEF132 编译指南 MacOS 篇 - depot_tools 安装与配置 (四)

1. 引言 在 CEF132&#xff08;Chromium Embedded Framework&#xff09;的编译过程中&#xff0c;depot_tools 扮演着举足轻重的角色。这套由 Chromium 项目精心打造的脚本和工具集&#xff0c;专门用于获取、管理和更新 Chromium 及其相关项目&#xff08;包括 CEF&#xff…

【C++高并发服务器WebServer】-16:UDP简单实现

本文目录 一、UDP通信流程二、UDP API2.1 sendto()2.2 recvfrom() 一、UDP通信流程 UDP通信的流程比较简单&#xff0c;下面这张图可以总结。 二、UDP API 2.1 sendto() UDP相关头文件如下。 #include <sys/types.h> #include <sys/socket.h>ssize_t sendto(…

k8s管理工具之lens

什么是lens Lens 是当前市场上最强大的K8S IDE。它是一个独立的单机应用&#xff0c;可以同时运行在macOS、Windows和Linux上。 作为K8S IDE&#xff0c;该有的它基本都有了&#xff01; 集群管理 导入已有集群 首先&#xff0c;你需要在 Lens 中添加你的 Kubernetes 集群。点…

SynthDetoxM - 现代LLM是少样本的并行去毒化数据标注器

SynthDetoxM: Modern LLMs are Few-Shot Parallel Detoxification Data Annotators https://arxiv.org/html/2502.06394v1 1. 主要内容 这篇论文提出了一个 用于生成多语言平行去毒化数据的管道&#xff0c;并介绍了SynthDetoxM&#xff0c;一个包含16,000个高质量去毒化句子对…

云服务器流量包用尽(中病毒)

1. 情况 腾讯云提示我账号欠费了&#xff0c;服务器存在恶意文件。。。 一看&#xff0c;流量包用尽超额了&#xff0c;CPU直接爆了。 用iftop监测一下网络流量。可以看到向多个IP发送了大量的流量。 看来是中病毒了&#xff0c;被当成 “肉鸡”&#xff0c;纳入“僵尸网络”…

RK3588视觉控制器与AI 算法:开启工业视觉检测新境界

在实际应用中&#xff0c;工业相机拍摄产品的图像&#xff0c;RK3588 迅速接收并进行预处理。AI 算法随即对图像进行深入分析&#xff0c;提取特征并与预设的标准进行对比&#xff0c;从而准确判断是否存在缺陷。 例如&#xff0c;在电子元件生产线上&#xff0c;RK3588 和 AI…

android的ViewModel这个类就是业务逻辑层吗

android的ViewModel这个类就是业务逻辑层吗&#xff1f; 相似&#xff1a;业务逻辑代码应该放在ViewModel这个类吗&#xff1f; 嗯&#xff0c;我现在在学习Android架构组件&#xff0c;特别是ViewModel。用户问ViewModel是否就是业务逻辑层&#xff0c;我需要仔细思考这个问题…

Gui-Guider1.8.1 数字时钟控件找不到定义,无法编译

我们在Gui-Guider中使用的一些控件&#xff0c;生成后会发现在LVGL源码中找不到该控件的定义&#xff0c;这时因为Gui-Guider中的一些控件是其自己编写的而不是LVGL提供的&#xff0c;那么我们该如何应用呢&#xff1f;这里拿Digital Clock数字时钟控件举例&#xff1a; 这里我…

使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)安装适配 Java 8 的 Maven

好的&#xff0c;这是使用 SDKMAN! 安装适配 Java 8 的 Maven 的步骤&#xff1a; 前提条件: 安装 SDKMAN!: 如果你的系统上没有安装 SDKMAN!&#xff0c;请按照以下说明进行安装: curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-i…

【Stable Diffusion模型测试】测试ControlNet,没有线稿图?

相信很多小伙伴跟我一样&#xff0c;在测试Stable Diffusion的Lora模型时&#xff0c;ControlNet没有可输入的线稿图&#xff0c;大家的第一反应就是百度搜&#xff0c;但是能从互联网上搜到的高质量线稿图&#xff0c;要么收费&#xff0c;要么质量很差。 现在都什么年代了&a…

oracle表分区--范围分区

文章目录 oracle表分区分区的原因分区的优势oracle表分区的作用oracle表分区类型一、范围分区二、 创建分区表和使用&#xff1a;1、按照数值范围划分2、按照时间范围3、MAXVALUE2. 向现有表添加新的分区3、 分区维护和重新组织&#xff08;合并/删除&#xff09; oracle表分区…

InspurServer服务器监控指标详解

在现代信息化环境中&#xff0c;服务器的稳定运行对于业务连续性至关重要。InspurServer作为高性能服务器解决方案&#xff0c;其性能监控与优化更是不可或缺。本文将基于监控易一体化运维软件&#xff0c;深入探讨InspurServer服务器的关键监控指标&#xff0c;包括响应时间、…

基于opencv的 24色卡IQA评测算法源码-可完全替代Imatest

1.概要 利用24色卡可以很快的分析到曝光误差&#xff0c;白平衡误差&#xff0c;噪声&#xff0c;色差&#xff0c;饱和度&#xff0c;gamma值。IQA或tuning工程一般用Imatest来手动计算&#xff0c;不便于产测部署&#xff0c;现利用opencv实现了imatest的全部功能&#xff0c…

Django开发入门 – 4.创建Django app

Django开发入门 – 4.创建Django app Create A Django App Under An Existing Project By JacksonML 1. 什么是Django app? Django项目面向Web应用程序&#xff0c;它会由一个或多个子模块组成&#xff0c;这些子模块称为apps。 Django apps负责执行完整Web应用程序中涉及…

string

string 概念 string 字符串其实是一种更加高级的封装,string字符串中包含大量的方法, 这些方法使得字符串的操作变得更加简单。 C中将字符串直接作为一种类型,也就是string类型,使用string类型创建的 对象就是C的字符串。 使用C中提供的string是,必须添加头文件string。 st…

如何在Excel和WPS中进行翻译

文档翻译我们可以用在线翻译工具&#xff0c;Excel工作表的翻译使用在线翻译工具就不是特别方便&#xff0c;那么如何快速进行翻译呢&#xff0c;我们今天介绍在不同的场景下如何利用翻译函数和Python程序来实现单元格的快速翻译。 一、在wps中进行翻译 WPS是我们常用的办公软…