背景介绍
AI大模型这两年可算是出尽风头,我们看看如何将大模型进行工程化,可以更近近距离感受下AI大模型。
引用软件
ollama
gradio
gemma:2b
实践过程
通过ollama私有化部署大模型gemma:2b
通过https://ollama.com/library根据需要查找需要部署的大模型,如qwen、llama。我找了一个参数较小的模型gemma:2b(需要计算资源较小,可以在我的GTX950M老显卡上做推理)
安装部署ollama(根据ollama官方指导安装就行)
远程拉取并启动大模型
ollama run gemma2:2b
可以通过pull拉取,暂不启动大模型
ollama pull gemma2:2b
注意:商业化部署,建议模型打包在镜像中启动,或者想办法部署ollama私有仓库(暂未实践)
访问大模型
大模型启动后即会进入交互式窗口,可以进行语言沟通或者图片解析
C:\Users\wangbin>ollama list
NAME ID SIZE MODIFIED
gemma2:2b 8ccf136fdd52 1.6 GB 18 hours ago
C:\Users\wangbin>ollama ps
NAME ID SIZE PROCESSOR UNTIL
gemma2:2b 8ccf136fdd52 2.9 GB 100% GPU 4 minutes from now
C:\Users\wangbin>ollama run gemma2:2b
>>> 猫和狗有啥区别
猫和狗虽然都是家宠物,但它们在很多方面都有显著的不同:
**体型和外形:**
* **大小:** 猫通常比狗小得多,体型更轻盈。
* **耳朵形状:** 猫的耳朵通常是圆形或三角形,而狗的耳朵形状多样,从长方形到尖尖的耳廓。
* **尾巴:** 猫的尾巴通常是细长的,而狗的尾巴形状和长度多样,可以是短毛、长毛、卷曲等等。
**性格和行为:**
* **独立性:** 猫比狗更独立,喜欢独自活动和探索。
* **社交:** 狗更擅长与人交流并寻求互动,通常需要更多陪伴和情感交流。
* **好奇心:** 猫的好奇心强,喜欢探索世界,会经常进行攀爬和探索活动。
* **玩耍方式:** 猫喜欢玩耍的方式多样,例如捉弄玩具、跳跃等。狗则更喜欢玩耍需要配合主人,比如追球、Fetch 等。
**生活习性:**
* **饮食:** 猫的食谱是肉类为主,而狗的食物类型更加多样,可以是肉类、蔬菜等。
* **照顾:** 猫和狗都需要定期清洁和护理,但猫可能比狗更需要特殊照顾。
* **训练:** 猫通常比较容易训练,而狗则需要更多时间和耐心进行训练。
**其他:**
* **寿命:** 猫的寿命比狗长,平均寿命大约为13-17年,而狗的寿命则根据品种不同而有所变化。
* **繁殖:** 猫和狗的繁殖方式和大小也存在差异。
总而言之,猫和狗虽然都是可爱的宠物,但它们之间存在很多不同的特征,需要根据你的个人情况和喜好选择合适的宠物。
希望以上信息能够帮助你更好地了解猫和狗的区别!
>>> Send a message (/? for help)
解析一张图片(gemma看起来无法解析本地路径图片--可以解析,可以解析网络图片)
>>> https://images.google.com.hk/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png
Ah, that's the Google logo! 😊
It shows Google's iconic white "G" with a colorful background.
Is there anything specific you wanted to know about the image?
Let me know what you want to discuss about it! 🗺 ️💻🔍
>>> Send a message (/? for help)
通过rest API和大模型交互
通过ollama sdk和大模型交互(在和gradio集成时比较有用)
from langchain_community.llms import Ollama
import gradio as gr
def sepia(input_img):
print(type(input_img))
print(input_img)
llm = Ollama(model="gemma2:2b")
result = llm.invoke(input_img)
return result
demo = gr.Interface(sepia, gr.Image(type="filepath"), "text")
if __name__ == "__main__":
demo.launch()
注意:ollama默认只监听localhost,先要远程访问api,需要修改环境变量
OLLAMA_HOST:0.0.0.0
OLLAMA_MODELS:D:\huggingface\ollama // 模型存放的位置
通过gradio部署大模型交互Web工程
生成交互式文本框
from langchain_community.llms import Ollama
import gradio as gr
def greet(name, intensity):
llm = Ollama(model="gemma2:2b")
result = llm.invoke(name)
return result
demo = gr.Interface(
fn=greet,
inputs=["text", "slider"],
outputs=["text"],
)
demo.launch()
生成图文多模态交互
from langchain_community.llms import Ollama
import gradio as gr
def sepia(input_img):
print(type(input_img))
print(input_img)
llm = Ollama(model="gemma2:2b")
result = llm.invoke(input_img)
return result
demo = gr.Interface(sepia, gr.Image(type="filepath"), "text")
if __name__ == "__main__":
demo.launch()
注意:Image支持不同的类型(https://www.gradio.app/docs/gradio/image),选择filepath类型时,gradio会将图片写入一个临时文件,传入文件路径