【AI开发:语言】二、Qwen1.5-7B模型本地部署CPU和GPU版

前言

        之前文章,我们采用了Koblod运行Yi-34B大模型,本文采用LM Studio来运行千问模型。

LM Studio并没有开源,但是可以免费使用,他是目前本地进行模型测试最好的工具了。

        在这里,依然使用Windows 10进行部署和测试,没有GPU。

        注意:LM的运行速度相比较Kobold两者差不多,而且也提供WEB服务,稍后也研究下他的API功能,LM的功能更多一些有待开发。

        完整工具包下载(均为官方版本):AI开发工具包官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘123云盘为您提供AI开发工具包最新版正式版官方版绿色版下载,AI开发工具包安卓版手机版apk免费下载安装到手机,支持电脑端一键快捷安装icon-default.png?t=N7T8https://www.123pan.com/s/b5zTTd-tyaH.html%E6%8F%90%E5%8F%96%E7%A0%81:rnwi

一、LM Studio下载

下载地址:LM Studio - Discover, download, and run local LLMs

二、模型下载

下载地址:AI快站 - HuggingFace模型免费加速下载

我们要从这里选择需要的模型。其他模型资源如下:

1.其他模型资源

  • 国内厂商模型
序号 厂商 访问地
# Win11本地AI翻译服务部署方案 ## 1. 系统配置确认 - 系统: Windows 11 - IP地址: 10.237.186.51 - GPU: NVIDIA RTX 3060 (12GB显存) - 模型路径: D:\Qwen1.5\models\qwen\Qwen1.5-7B-Chat ## 2. 目录结构设计 D:\Qwen1.5 建议的目录结构: ``` Qwen1.5/ ├── models/ │ └── qwen/ │ └── Qwen1.5-7B-Chat/ (已有模型文件) ├── app/ │ ├── static/ (静态文件) │ ├── templates/ (HTML模板) │ ├── config.py (配置文件) │ ├── main.py (主程序) │ ├── translator.py (翻译核心) │ └── file_processor.py (文件处理) ├── requirements.txt (依赖文件) └── README.md (说明文档) ``` ## 3. 核心代码实现 ### config.py ```python import os class Config: MODEL_PATH = "D:/Qwen1.5/models/qwen/Qwen1.5-7B-Chat" HOST = "10.237.186.51" PORT = 5000 ALLOWED_EXTENSIONS = {'txt', 'pdf', 'docx', 'pptx', 'xlsx'} MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16MB TEMP_FOLDER = "D:/Qwen1.5/temp" ``` ### translator.py ```python from transformers import AutoModelForCausalLM, AutoTokenizer from config import Config import torch device = "cuda" if torch.cuda.is_available() else "cpu" class Translator: def __init__(self): self.tokenizer = AutoTokenizer.from_pretrained(Config.MODEL_PATH) self.model = AutoModelForCausalLM.from_pretrained( Config.MODEL_PATH, torch_dtype="auto", device_map="auto" ) def translate(self, text, source_lang, target_lang): prompt = f"将以下{source_lang}文本翻译成{target_lang}:\n{text}" inputs = self.tokenizer(prompt, return_tensors="pt").to(device) outputs = self.model.generate(**inputs, max_new_tokens=512) return self.tokenizer.decode(outputs[0], skip_special_tokens=True) ``` ### file_processor.py ```python import os from config import Config from translator import Translator import docx import PyPDF2 from pptx import Presentation from openpyxl import load_workbook translator = Translator() def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in Config.ALLOWED_EXTENSIONS def process_file(filepath, source_lang, target_lang): ext = os.path.splitext(filepath)[1].lower() if ext == '.txt': return process_txt(filepath, source_lang, target_lang) elif ext == '.docx': return process_docx(filepath, source_lang, target_lang) elif ext == '.pdf': return process_pdf(filepath, source_lang, target_lang) elif ext == '.pptx': return process_pptx(filepath, source_lang, target_lang) elif ext == '.xlsx': return process_xlsx(filepath, source_lang, target_lang) else: raise ValueError("Unsupported file type") def process_txt(filepath, source_lang, target_lang): with open(filepath, 'r', encoding='utf-8') as f: content = f.read() translated = translator.translate(content, source_lang, target_lang) return translated.encode('utf-8') def process_docx(filepath, source_lang, target_lang): doc = docx.Document(filepath) for para in doc.paragraphs: if para.text.strip(): para.text = translator.translate(para.text, source_lang, target_lang) output_path = os.path.join(Config.TEMP_FOLDER, "translated.docx") doc.save(output_path) return output_path # 其他文件处理函数类似,限于篇幅省略... ``` ### main.py ```python from flask import Flask, render_template, request, send_file, redirect, url_for from file_processor import allowed_file, process_file from config import Config import os app = Flask(__name__) app.config.from_object(Config) @app.route('/', methods=['GET', 'POST']) def index(): if request.method == 'POST': if 'file' not in request.files: return redirect(request.url) file = request.files['file'] if file.filename == '': return redirect(request.url) if file and allowed_file(file.filename): source_lang = request.form.get('source_lang', '中文') target_lang = request.form.get('target_lang', '英文') temp_path = os.path.join(Config.TEMP_FOLDER, file.filename) file.save(temp_path) try: result = process_file(temp_path, source_lang, target_lang) if isinstance(result, str): # 处理后的文件路径 return send_file(result, as_attachment=True) else: # 直接返回的字节内容 return send_file( result, as_attachment=True, download_name=f"translated_{file.filename}" ) finally: if os.path.exists(temp_path): os.remove(temp_path) return render_template('index.html') if __name__ == '__main__': os.makedirs(Config.TEMP_FOLDER, exist_ok=True) app.run(host=Config.HOST, port=Config.PORT) ``` ### templates/index.html ```html <!DOCTYPE html> <html> <head> <title>AI翻译服务</title> </head> <body> <h1>文件翻译服务</h1> <form method="post" enctype="multipart/form-data"> <div> <label>源语言:</label> <select name="source_lang"> <option value="中文">中文</option> <option value="英文">英文</option> <option value="日文">日文</option> <option value="法文">法文</option> </select> </div> <div> <label>目标语言:</label> <select name="target_lang"> <option value="英文">英文</option> <option value="中文">中文</option> <option value="日文">日文</option> <option value="法文">法文</option> </select> </div> <div> <input type="file" name="file" required> </div> <button type="submit">翻译文件</button> </form> </body> </html> ``` ### requirements.txt ``` flask>=2.0.0 transformers>=4.30.0 torch>=1.10.0 python-docx>=0.8.10 PyPDF2>=2.0.0 python-pptx>=0.6.18 openpyxl>=3.0.0 ``` ## 4. 部署步骤 1. 创建上述目录结构 2. 将代码文件放入对应位置 3. 安装依赖: `pip install -r requirements.txt` 4. 运行服务: `python main.py` 5. 内网其他电脑可通过 `http://10.237.186.51:5000` 访问 ## 5. 注意事项 1. 确保NVIDIA驱动CUDA已正确安装 2. 首次运行会下载模型相关文件,请耐心等待 3. 大文件翻译可能需要较长时间 4. 确保防火墙允许5000端口的访问
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

My的梦想已实现

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

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

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

打赏作者

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

抵扣说明:

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

余额充值