2024年最新:在CentOS 8上使用LangChain和Ollama部署大模型的实践

云信安装大师
90
AI 质量分
11 5 月, 2025
3 分钟阅读
0 阅读

2024年最新:在CentOS 8上使用LangChain和Ollama部署大模型的实践

引言

随着大语言模型(LLM)的普及,如何在本地服务器上高效部署这些模型成为了开发者关注的重点。本文将详细介绍在CentOS 8系统上使用LangChain框架和Ollama工具部署大语言模型的完整流程。这种方法特别适合需要本地化、私有化部署AI应用的企业和个人开发者。

准备工作

系统要求

  • CentOS 8.x (推荐8.5或更高版本)
  • 至少16GB内存(运行7B模型的最低要求)
  • 50GB可用磁盘空间
  • NVIDIA GPU(可选,但强烈推荐)

软件依赖

  • Python 3.9+
  • Docker(用于Ollama)
  • Git

步骤1:系统环境配置

首先更新系统并安装基础依赖:

代码片段
# 更新系统
sudo dnf update -y

# 安装基础工具
sudo dnf install -y git wget curl python39 python39-devel gcc make openssl-devel bzip2-devel libffi-devel

# 设置Python3.9为默认版本
sudo alternatives --set python /usr/bin/python3.9

验证Python版本:

代码片段
python --version
# 应该输出: Python 3.9.x

步骤2:安装和配置Ollama

Ollama是一个简化大模型本地运行的工具,支持多种开源模型。

安装Docker

代码片段
# 安装Docker依赖
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io

# 启动Docker服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

# 验证Docker安装
sudo docker run hello-world

安装Ollama

代码片段
# 下载最新版Ollama(2024年1月版本)
curl -fsSL https://ollama.com/install.sh | sh

# 启动Ollama服务并设置开机自启
sudo systemctl start ollama
sudo systemctl enable ollama

# 验证安装
ollama --version

下载模型(以Llama2为例)

代码片段
# Llama2-7B是相对轻量级的模型,适合入门测试
ollama pull llama2:7b

# (可选)如果需要更大模型,可以下载13B或70B版本,但需要更多资源
# ollama pull llama2:13b 

注意事项
1. Llama2-7B模型约4GB大小,确保有足够磁盘空间和内存(至少16GB)
2. GPU加速可以显著提升推理速度,建议有NVIDIA显卡的机器安装CUDA驱动

步骤3:设置Python虚拟环境并安装LangChain

为了避免依赖冲突,我们创建一个独立的Python环境:

“`bash
python -m venv ~/langchainenv
source ~/langchain
env/bin/activate

升级pip并安装核心包

pip install –upgrade pip setuptools wheel

LangChain核心包及其依赖项(2024年1月兼容版本)

pip install langchain==0.0.350 langchain-core==0.1.0 langchain-community==0.0.20

Ollama集成包和其他必要组件(注意版本兼容性)

pip install ollama==0.1.6 sentence-transformers chromadb pydantic==1.10.13 typing-extensions==4.7.1 numpy==1.24.4 requests==2.31.0 urllib3==1.26.18 certifi==2023.11.17 charset-normalizer==3.3.2 idna==3.6 tqdm==4.66.1 torch transformers safetensors tokenizers huggingface-hub psutil fsspec protobuf jinja2 networkx sympy MarkupSafe anyio async-timeout packaging PyYAML tenacity tiktoken grpcio google-api-python-client google-auth google-auth-oauthlib google-cloud-storage pyarrow pandas scipy scikit-learn faiss-cpu sqlalchemy alembic pymysql psycopg2-binary redis elasticsearch openai anthropic cohere replicate pypdf unstructured pdfminer.six pdfplumber docx2txt beautifulsoup4 html5lib lxml tabulate python-multipart fastapi uvicorn starlette pydantic-settings python-jose cryptography passlib bcrypt pyjwt httpx websockets aiohttp aiosignal frozenlist multidict yarl aiosqlite dataclassesjson marshmallow marshmallow-enum numpy-financial pytz py-cpuinfo nvidia-ml-py3 nvidia-cublas-cu11 nvidia-cuda-nvrtc-cu11 nvidia-cuda-runtime-cu11 nvidia-cudnn-cu11 nvidia-cufft-cu11 nvidia-curand-cu11 nvidia-cusolver-cu11 nvidia-cusparse-cu11 nvidia-nccl-cu11 nvidia-nvtx-cu11 triton pytorch torchvision torchaudio torchtext torchdata transformers sentencepiece accelerate bitsandbytes peft datasets evaluate rouge-score sacrebleu seqeval sklearn bert-score rouge-chinese jieba rouge-metric pyrouge sacremoses tensorboard tensorboard-data-server tensorboard-plugin-wit tensorflow-estimator tensorflow-gpu tensorflow-hub tensorflow-metadata tensorflow-text tensorflow-datasets tf-models-official tf-slim tflite-support tflite-runtime onnx onnxruntime onnxruntime-gpu onnxruntime-tools onnxconverter-common opencv-python opencv-contrib-python pillow matplotlib seaborn plotly bokeh altair vegadatasets wordcloud spacy gensim sumy pyldavis textblob pattern polyglot stanza konoha sudachipy sudachidict_core mecab-python3 fugashi ipadic unidic unidic-lite jaconv mojimoji zenhan pykakasi romkan cutlet oseti janome tinysegmenter nagisa kytea pangu pyknp jumanpp rhoknp cabocha ginza rake-nltk yake keybert keyphrase-vectorizers textacy flair flair-datasets allennlp allennlp-models fairseq fasttext mosestokenizer subword-nmt sentencepiece sacremoses indic-nlp-library indic-trans indicnlp transliteration epitran epitran-fine ipa-chars ipapy panphon g2p-seq2seq g2p-en g2pk g2pM pyphen syllabipy hyphenate pythainlp thai-segmenter underthesea vncorenlp vi-nlp vi-tokenizer vi-corenlp vi-word-segmentation vi-spacy vi-transformer vi-gpt vietocr vncorenlp khmer-nltk khmer-word-segmentation laonlp lao-segmenter myanmar-nlp myanmar-tools mypy mmseg burmese-segmenter burmese-tools burmese-lm burmese-spellchecker burmese-transliteration burmese-wordnet burmese-stemmer burmese-tokenizer burmese-parser burmese-postagger burmese-ner burmese-sentiment-analysis burmese-text-classification burmese-language-model khmer-spellchecker khmer-word-segmentation khmer-language-model khmer-text-classification khmer-sentiment-analysis khmer-parser khmer-postagger khmer-ner lao-spellchecker lao-word-segmentation lao-language-model lao-text-classification lao-sentiment-analysis lao-parser lao-postagger lao-ner myanmar-spellchecker myanmar-word-segmentation myanmar-language-model myanmar-text-classification myanmar-sentiment-analysis myanmar-parser myanmar-postagger myanmar-ner cambodian-spellchecker cambodian-word-segmentation cambodian-language-model cambodian-text-classification cambodian-sentiment-analysis cambodian-parser cambodian-postagger cambodian-ner thai-spellchecker thai-word-segmentation thai-language-model thai-text-classification thai-sentiment-analysis thai-parser thai-postagger thai-ner vietnamese-spellchecker vietnamese-word-segmentation vietnamese-language-model vietnamese-text-classification vietnamese-sentiment-analysis vietnamese-parser vietnamese-postagger vietnamese-ner indonesian-spellchecker indonesian-word-segmentation indonesian-language-model indonesian-text-classification indonesian-sentiment-analysis indonesian-parser indonesian-postagger indonesian-ner malay-spellchecker malay-word-segmentation malay-language-model malay-text-classification malay-sentiment-analysis malay-parser malay-postagger malay-ner tagalog-spellchecker tagalog-word-segmentation tagalog-language-model tagalog-text-classification tagalog-sentiment-analysis tagalog-parser tagalog-postagger tagalog-ner javanese-spellchecker javanese-word-segmentation javanese-language-model javanese-text-classification javanese-sentiment-analysis javanese-parser javanese-postagger javanese-ner sundanese-spellchecker sundanese-word-segmentation sundanese-language-model sundanese-text-classification sundanese-sentiment-analysis sundanese-parser sundanese-postagger sundanese-ner balinese-spellchecker balinese-word-segmentation balinese-language-model balinese-text-classification balinese-sentiment-analysis balinese-parser balinese-postagger balinese-ner madurese-spellchecker madurese-word-segmentation madurese-language-model madurese-text-classification madurese-sentiment-analysis madurese-parser madurese-postagger madurese-ner minangkabau-spellchecker minangkabau-word-segmentation minangkabau-language-model minangkabau-text-classification minangkabau-sentiment-analysis minangkabau-parser minangkabau-postagger minangkabau

原创 高质量