leptonai简介
Lepton AI是一个云原生AI平台,提供了便捷的python sdk和命令行工具,能够在分钟级别高效运行AI应用。Lepton AI平台链接
QuickStart体验
Python虚拟环境
这里选用python 3.11版本
conda create --name leptonai python=3.11
conda activate leptonai
安装leptonai库
git clone https://github.com/leptonai/leptonai.git
cd leptonai
pip install -e .
pip install transformers torch
本地运行模型
Lepton有个photon的概念,这一概念来将运行人工智能模型的代码、其依赖项以及其他杂项内容捆绑在一起。可以近似将其视为一个Docker容器,但它更轻量且专为人工智能定制
创建一个名为mygpt2的photon,实际上是下载gpt2模型
lep photon create --name mygpt2 --model hf:gpt2
本地运行mygpt2,默认监听在本地的8080端口
# 代理下载模型
export HF_ENDPOINT=https://hf-mirror.com
lep photon runlocal --name mygpt2
本地也会起一个swagger apiserver:http://0.0.0.0:8080/docs
curl请求验证
curl -X 'POST' \
'http://0.0.0.0:8080/run' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"inputs": "Once upon a time"
}'
部署到Lepton AI平台
需要先登录输入凭证
lep login
推送mygpt2 photon到Lepton AI平台
lep photon push --name mygpt2
创建一个deployment,实际上是photon的一个实例
lep photon run --name mygpt2 --deployment-name mygpt2
管理deployment
lep deployment list
lep deployment status --name mygpt2
清理资源
lep deployment remove --name mygpt2
lep photon remove --name mygpt2
leptonai客户端
https://github.com/leptonai/leptonai:leptonai库其实是一个python sdk,与Lepton AI平台交互,本身也提供命令行工具交互。
用lep命令行的python脚本作为vscode debug启动入口
#!/opt/anaconda3/envs/leptonai/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from leptonai.cli import lep
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(lep())
整体代码是客户端代码,跟server端进行交互,代码调试也很方便。可作为命令行工具实现参考的开源项目
lepton AI搜索
leptonai/search_with_lepton项目可以近似认为AI搜索的简易版,实质是大模型结合搜索,不过需要与 leptonai交互,search4all是基于search_with_lepton的改进版,与leptonai解耦。搜索对接支持SEARCH1API,BING,GOOGLE,SERPER,SEARCHAPI,SEARXNG。
SEARXNG部署
SEARXNG是一个开源免费搜索平台,可以私有化部署,使用docker-compose方式
克隆searxng-docker项目
cd /usr/local
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
编辑环境变量配置,这里使用私有ip访问,不使用域名,不对公网提供服务
[root@k8s-1 searxng-docker]# vim .env
SEARXNG_HOSTNAME=search.xxx.com # 随便填个
编辑settings.yml,更多配置参数参考searxng settings.yml
[root@k8s-1 searxng-docker]# vim searxng/settings.yml
use_default_settings: true
server:
# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.yml
secret_key: "ultrasecretkey" # change this!
limiter: false # can be disabled for a private instance
image_proxy: false
ui:
static_use_hash: true
redis:
url: redis://redis:6379/0
search:
formats:
- html
- json
outgoing:
# default timeout in seconds, can be override by engine
request_timeout: 6.0
# the maximum timeout in seconds
max_request_timeout: 10.0
proxies:
all://:
- http://<你代理地址>:7890 # 用于访问google
[root@k8s-1 searxng-docker]#
sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml
编辑docker-compose.yaml,注释caddy段,这里不用域名,所以不需要caddy
[root@k8s-1 searxng-docker]# vim docker-compose.yaml
version: "3.7"
services:
# caddy:
# container_name: caddy
# image: docker.io/library/caddy:2-alpine
# network_mode: host
# restart: unless-stopped
# volumes:
# - ./Caddyfile:/etc/caddy/Caddyfile:ro
# - caddy-data:/data:rw
# - caddy-config:/config:rw
# environment:
# - SEARXNG_HOSTNAME=${SEARXNG_HOSTNAME:-http://localhost:80}
# - SEARXNG_TLS=${LETSENCRYPT_EMAIL:-internal}
# cap_drop:
# - ALL
# cap_add:
# - NET_BIND_SERVICE
# logging:
# driver: "json-file"
# options:
# max-size: "1m"
# max-file: "1"
redis:
container_name: redis
image: docker.io/valkey/valkey:7-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
networks:
- searxng
volumes:
- valkey-data2:/data
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
restart: unless-stopped
networks:
- searxng
ports:
- "0.0.0.0:8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://172.16.80.60:8080
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
searxng:
volumes:
# caddy-data:
# caddy-config:
valkey-data2:
启动searxng
[root@k8s-1 searxng-docker]# docker-compose up -d
AI搜索同类项目
search4all
search4all fastapi代替sanic的实现: https://github.com/yaoice/search4all/tree/use-fastapi
MindSearch
MindSearch 是一个具有Perplexity.ai Pro性能的开源AI搜索引擎框架。它支持使用闭源的 LLMs(如 GPT、Claude)或开源的LLMs(如 InternLM2.5–7b–chat)进行部署。具有多种强大功能和特点,包括能回答各种问题、进行深度知识发现、提供详细解决方案路径、优化的用户界面体验、动态图构建过程等。 https://github.com/InternLM/MindSearch
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付