译者 | 李睿
审校 | 重楼
生成式人工智能最近的爆发标志着机器学习模型的能力发生了翻天覆地的变化。像DALL-E 2、GPT-3和Codex这样的人工智能系统表明,人工智能系统在未来可以模仿人类独特的技能,例如创作艺术、进行对话,甚至编写软件。然而,有效地部署和管理这些新兴的大型语言模型(LLM)给组织带来了巨大的挑战。
本文将为软件工程师提供支持研究的解决方案策略,通过利用机器学习运营(MLOps)最佳实践来顺利集成生成式人工智能,并详细介绍经过验证的技术以部署LLM以优化效率,在生产中对其进行监控,不断更新以提高性能,并确保它们在各种产品和应用程序中协同工作。通过遵循所提出的方法,人工智能从业者可以规避常见的陷阱,并成功地利用生成式人工智能的力量来创造商业价值并让用户受益。
生成式人工智能是人工智能进步的证明,标志着与传统模型的重大背离。这种方法的重点是根据从大量数据中识别出的模式生成新的内容,无论是文本、图像还是声音。这种能力具有深远的含义。
由于生成式人工智能的应用,从生命科学行业到娱乐行业,各行各业都在见证着革命性的变化。无论是开发新的药物还是创作音乐,这项技术的影响是不可否认的,并将继续塑造许多行业的未来发展轨迹。
大型语言模型通常称为LLM,是人工智能模型的一个子集,旨在理解和生成类似人类的文本。它们处理和产生大量连贯和场景相关的文本的能力使其与众不同。然而,LLM具有革命性的特性也带来了复杂性。考虑到这些模型的大小和计算需求,有效地部署和服务这些模型需要一种细致入微的方法。将LLM集成到应用程序中的复杂性强调了对专门策略和工具的需求。
AI-Optimized vLLM是一个专门的框架,旨在满足当代人工智能应用的需求。这一架构经过精心设计以处理大量数据集,能够确保即使在困难的条件下也能快速响应。
(1)关键特性
(2)优点
(3)缺点
(4)示例代码
离线批量服务:
Python/ target=_blank class=infotextkey>Python
# Install the required library
# pip install ai_vllm_library
from ai_vllm import Model, Params, BatchService
# Load the model
model = Model.load("ai_model/llm-15b")
# Define parameters
params = Params(temp=0.9, max_tokens=150)
# Create a batch of prompts
prompts = ["AI future", "Generative models", "MLOps trends", "Future of robotics"]
# Use the BatchService for offline batch predictions
batch_service = BatchService(model, params)
results = batch_service.predict_batch(prompts)
# Print the results
for prompt, result in zip(prompts, results):
print(f"Prompt: {prompt}nResult: {result}n")
API服务器:
Python
# Install the required libraries
# pip install ai_vllm_library flask
from ai_vllm import Model, Params
from flask import Flask, request, jsonify
App = Flask(__name__)
# Load the model
model = Model.load("ai_model/llm-15b")
# Define parameters
params = Params(temp=0.9, max_tokens=150)
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
prompt = data.get('prompt', '')
result = model.predict([prompt], params)
return jsonify({"result": result[0]})
if __name__ == '__main__':
app.run(port=5000)
GenAI文本推理是一个在处理基于语言的任务时以其适应性和效率而表现突出的框架。它提供了一种精简的文本生成方法,强调速度和连贯性。
(1)关键特性
(2)优点
(3)缺点
与Docker集成的Web服务器示例代码
(1)Web服务器代码(app.py)
Python
# Install the required library
# pip install genai_inference flask
from flask import Flask, request, jsonify
from genai_infer import TextGenerator
app = Flask(__name__)
# Initialize the TextGenerator
generator = TextGenerator("genai/llm-15b")
@app.route('/generate_text', methods=['POST'])
def generate_text():
data = request.json
prompt = data.get('prompt', '')
response = generator.generate(prompt)
return jsonify({"generated_text": response})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
(2)Dockerfile
Dockerfile
# Use an official Python runtime as the base image
FROM python:3.8-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container
COPY . /app
# Install the required libraries
RUN pip install genai_inference flask
# Make port 5000 available to the world outside this container
EXPOSE 5000
# Define environment variable for added security
ENV NAME World
# Run app.py when the container launches
CMD ["python", "app.py"]
(3)构建和运行Docker容器:要构建Docker镜像并运行容器,通常会使用以下命令:
Shell
docker build -t genai_web_server .
docker run -p 5000:5000 genai_web_server
(4)API调用:一旦服务器启动并在Docker容器中运行,API调用就可以使用curl或任何HTTP客户端工具对/generate_text端点进行调用:
Shell
curl -X POST -H "Content-Type: application/json" -d '{"prompt":"The future of AI"}' http://localhost:5000/g
MLOps OpenLLM平台是人工智能框架海洋中的一个灯塔,特别是为LLM量身定制的。它的设计理念促进了LLM在各种环境中的无缝部署、管理和扩展。
(1)关键特性
(2)优点
(3)缺点
Web服务器代码(Server .py):
Python
# Install the required library
# pip install openllm flask
from flask import Flask, request, jsonify
from openllm import TextGenerator
app = Flask(__name__)
# Initialize the TextGenerator from OpenLLM
generator = TextGenerator("openllm/llm-15b")
@app.route('/generate', methods=['POST'])
def generate():
data = request.json
prompt = data.get('prompt', '')
response = generator.generate_text(prompt)
return jsonify({"generated_text": response})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
进行API调用:在服务器活动运行的情况下,API调用可以定向到/generate端点。下面是一个使用curl命令的简单示例:
Shell
curl -X POST -H "Content-Type: application/json" -d '{"prompt":"The evolution of MLOps"}' http://localhost:8080/gene
RayServe是Ray生态系统的一个重要组成部分,在开发人员和研究人员中越来越受欢迎。它是一个模型服务系统,从头开始设计,可以快速将机器学习模型(包括大型语言模型)投入生产。
(1)关键特性
(2)优点
与Ray生态系统集成:作为Ray生态系统的一部分,它受益于Ray的功能,例如分布式训练和细粒度并行性。
(3)缺点
Web服务器代码(Server .py):
Python
# Install the required library
# pip install ray[serve]
import ray
from ray import serve
from openllm import TextGenerator
ray.init()
client = serve.start()
def serve_model(request):
generator = TextGenerator("ray/llm-15b")
prompt = request.json.get("prompt", "")
return generator.generate_text(prompt)
client.create_backend("llm_backend", serve_model)
client.create_endpoint("llm_endpoint", backend="llm_backend", route="/generate")
if __name__ == "__main__":
ray.util.connect("localhost:50051")
API调用的查询:随着RayServe服务器的运行,API查询可以被分派到/generate端点。下面是使用curl命令的示例:
Shell
curl -X POST -H "Content-Type: application/json" -d '{"prompt":"The intricacies of RayServe"}' http://localhost:8000/generate
随着技术的发展,软件工程师发现自己处于创新和实用性的十字路口。部署大型语言模型(LLM)也不例外。由于这些模型具有强大的功能,它们带来了挑战和顾虑,工程师必须解决这些挑战和顾虑,以充分利用它们的潜力。
部署LLM的技巧和最佳实践:
持续集成和持续部署(CI/CD)是MLOps实现的支柱。它们的意义是多方面的:
总之,对于踏上LLM部署之路的软件工程师来说,将最佳实践与CI/CD的健壮性相结合,可以为在不断发展的MLOps环境中取得成功铺平道路。
原文标题:Generative AI Unleashed: MLOps and LLM Deployment Strategies for Software Engineers