开源可部署国产化适配Lychee-Rerank在麒麟V10海光C86平台部署记录1. 项目背景与价值在信息检索和文档处理领域相关性评分是一个核心且关键的技术环节。传统的云端API服务虽然方便但存在数据隐私、网络依赖和使用成本等问题。Lychee-Rerank作为一个开源的相关性评分工具提供了纯本地化的解决方案特别适合对数据安全要求较高的场景。本次部署实践基于麒麟V10操作系统和海光C86硬件平台这是国产化替代的重要技术路线。通过在实际生产环境中的部署测试验证了Lychee-Rerank在国产化平台上的兼容性和性能表现为相关行业提供了可行的技术参考。工具的核心价值在于完全本地化所有数据处理和推理都在本地完成无需网络连接数据安全敏感文档无需上传到第三方服务杜绝隐私泄露风险国产化适配支持国产操作系统和硬件平台符合信创要求灵活定制支持自定义指令和评分规则适应不同业务场景2. 环境准备与依赖安装2.1 系统环境要求本次部署基于以下环境操作系统麒麟V10 SP2CPU架构海光C86x86_64兼容Python版本3.8内存要求至少8GB模型加载需要约3GB内存2.2 基础依赖安装首先更新系统包管理器并安装基础开发工具# 更新系统包列表 sudo yum update # 安装开发工具和编译依赖 sudo yum install -y gcc gcc-c make cmake sudo yum install -y python3-devel openssl-devel libffi-devel2.3 Python环境配置创建独立的Python虚拟环境并安装必要依赖# 创建虚拟环境 python3 -m venv lychee-env source lychee-env/bin/activate # 安装核心Python依赖 pip install --upgrade pip pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu pip install streamlit transformers sentencepiece protobuf2.4 模型文件准备由于Lychee官方权重文件可能不可用我们使用Qwen2.5-1.5B作为替代方案# 创建项目目录 mkdir lychee-rerank cd lychee-rerank # 下载模型文件可选transformers会自动下载 # 或者手动放置已下载的模型到指定目录3. 部署与配置过程3.1 项目结构搭建创建标准的项目文件结构lychee-rerank/ ├── app.py # Streamlit主应用 ├── rerank_model.py # 推理模型封装 ├── requirements.txt # 依赖列表 ├── models/ # 模型文件目录 └── examples/ # 示例文档3.2 核心推理代码实现创建rerank_model.py文件实现评分核心逻辑import torch from transformers import AutoTokenizer, AutoModelForCausalLM import numpy as np class LycheeRerank: def __init__(self, model_pathQwen/Qwen2.5-1.5B): self.device cuda if torch.cuda.is_available() else cpu self.tokenizer AutoTokenizer.from_pretrained(model_path) self.model AutoModelForCausalLM.from_pretrained( model_path, torch_dtypetorch.float16 if self.device cuda else torch.float32, device_mapauto if self.device cuda else None ) self.system_prompt 判断以下文档是否与查询相关。只回答是或否。 def calculate_relevance(self, instruction, query, document): prompt fInstruction{instruction}/Instruction\nQuery{query}/Query\nDocument{document}/Document inputs self.tokenizer(prompt, return_tensorspt).to(self.device) with torch.no_grad(): outputs self.model(**inputs) # 提取是的概率作为相关性分数 logits outputs.logits[0, -1, :] yes_token_id self.tokenizer.convert_tokens_to_ids(是) no_token_id self.tokenizer.convert_tokens_to_ids(否) yes_logit logits[yes_token_id].item() no_logit logits[no_token_id].item() # 使用softmax计算概率 yes_prob np.exp(yes_logit) / (np.exp(yes_logit) np.exp(no_logit)) return yes_prob3.3 可视化界面开发创建app.py文件实现Streamlit用户界面import streamlit as st import pandas as pd from rerank_model import LycheeRerank # 初始化模型 st.cache_resource def load_model(): return LycheeRerank() def main(): st.title(⚖️ Lychee-Rerank 相关性评分工具) st.markdown(基于Qwen2.5-1.5B的本地检索相关性评分工具) # 初始化session state if results not in st.session_state: st.session_state.results None # 输入区域 col1, col2 st.columns(2) with col1: st.subheader(输入配置) instruction st.text_input( 指令(Instruction), value基于查询检索相关文档, help自定义评分规则 ) query st.text_area( 查询(Query), valueWhat is the capital of China?, height100, help输入待匹配的查询语句 ) documents st.text_area( 候选文档, valueBeijing is the capital of China.\nShanghai is the largest city in China.\nChina is located in East Asia.\nThe Great Wall is in China.\nTokyo is the capital of Japan., height200, help每行输入一条候选文档支持批量输入 ) if st.button( 计算相关性分数, typeprimary): with st.spinner(计算中请稍候...): model load_model() doc_list [doc.strip() for doc in documents.split(\n) if doc.strip()] results [] for i, doc in enumerate(doc_list): score model.calculate_relevance(instruction, query, doc) results.append({ rank: i 1, score: score, document: doc }) # 按分数降序排序 results.sort(keylambda x: x[score], reverseTrue) for i, res in enumerate(results): res[rank] i 1 st.session_state.results results # 结果显示区域 with col2: st.subheader(评分结果) if st.session_state.results: for result in st.session_state.results: score result[score] # 设置颜色和进度条 if score 0.8: color green elif score 0.4: color orange else: color red st.markdown(f**#{result[rank]} | 分数: {score:.6f}**) st.progress(score) # 显示文档内容 st.code(result[document], languagetext) st.divider() if __name__ __main__: main()4. 运行与测试验证4.1 启动应用程序在项目目录下执行以下命令启动服务# 激活虚拟环境 source lychee-env/bin/activate # 启动Streamlit应用 streamlit run app.py --server.port 8501 --server.address 0.0.0.0启动成功后控制台会显示访问地址通常为http://localhost:8501。4.2 功能测试验证通过浏览器访问应用界面后进行以下测试基础功能测试使用默认的示例数据点击计算按钮验证是否能正常返回结果自定义指令测试修改Instruction内容验证评分规则是否相应变化批量文档测试输入多条候选文档验证批量处理能力性能测试测试不同数量文档的处理时间评估性能表现4.3 国产化适配验证在海光C86平台上的特别验证点# 验证CPU架构兼容性 lscpu | grep Architecture # 应显示x86_64 # 验证麒麟系统版本 cat /etc/os-release | grep PRETTY_NAME # 应显示Kylin Linux Advanced Server V10 # 验证Python环境 python3 -c import torch; print(torch.__version__); print(CUDA available:, torch.cuda.is_available())5. 部署优化与实践建议5.1 性能优化策略针对国产化平台的性能优化建议# 模型加载优化 model AutoModelForCausalLM.from_pretrained( model_path, torch_dtypetorch.float16, # 使用半精度减少内存占用 device_mapauto, low_cpu_mem_usageTrue # 减少CPU内存使用 ) # 推理过程优化 with torch.inference_mode(): # 比torch.no_grad()更高效 outputs model(**inputs)5.2 内存管理建议对于内存受限的环境分批处理大量文档时采用分批处理避免内存溢出模型量化使用8bit或4bit量化进一步减少内存占用缓存清理定期清理GPU和CPU缓存5.3 生产环境部署正式环境部署建议使用反向代理通过Nginx代理Streamlit服务设置开机自启使用systemd管理服务进程日志监控配置完善的日志记录和监控系统定期更新保持模型和依赖库的版本更新6. 总结通过本次在麒麟V10和海光C86平台的部署实践我们成功验证了Lychee-Rerank相关性评分工具在国产化环境中的可行性和稳定性。工具展现了优秀的兼容性和性能表现为相关行业提供了可靠的本地化解决方案。关键成果完成了从模型加载到界面展示的完整部署流程验证了国产化平台的兼容性和性能表现提供了开箱即用的可视化评分工具确保了数据处理的完全本地化和安全性实践价值 本次部署记录为类似项目的国产化适配提供了详细参考特别是在处理敏感数据的场景下本地化解决方案显得尤为重要。Lychee-Rerank不仅是一个技术工具更是数据安全和自主可控理念的具体实践。对于需要在国产化环境中部署类似AI应用的团队本文提供的经验和方法论具有直接的参考价值。随着国产化替代进程的加速这类经过验证的解决方案将发挥越来越重要的作用。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。