轻触ollama

轻触ollama

ollama+llama3

2024年ChatGPT迎来了井喷式发展,chatgpt相关应用层出不穷,chatgpt就像一位聪明睿智的老师,你提什么问题都可以回答,文学、代码等任何主题都可以。ChatGPT可以用于自然语言处理、机器翻译、对话系统、自动回复和智能客服等方面,通过人类语言直接与人交流,可以给用户提供更好的用户体验,继而实现节省人力和时间成本的目的。

后期开源的大模型层出不穷,大部分都无法直接运行在个人电脑(没有独立显卡的)上,这些模型运行通常需要大量的计算资源(特别是显卡)和复杂的配置部署。ollama的出现帮助用户快速在本地运行开源大模型,用户仅需要执行一条命令就可以本地运行开源大模型。2024年4月18日,meta开源了Llama 3大模型(8B和70B两个版本),ollama也很快进行了支持,可以快速本地化体验lllama3模型。

安装ollama

在自己电脑上ollama的安装运行比较简单,网上有很多的参考文章

Ollama 轻松玩转本地大模型,带你体验谷歌最强的gemma模型,部署私人ChatGPT

使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B

在mac电脑上运行如下,操作比较简单,但是运行频繁的话占用系统资源特别高,CPU上运行大模型还是很耗费资源的。

安装ollama遇到的问题

pull请求被reset掉

我们服务器有一些1080卡资源,尝试部署到GPU上看看速度咋样,Linux安装比较简单

curl -fsSL https://ollama.com/install.sh | sh

启动ollama后进行pull llama3模型,提示网络连接被reset掉了

看起来像是被墙了,设置一个HTTP代理后继续pull还是不行,但是curl却是走代理了

OLLAMA_HOST无法监听本地IP

mac Docker运行open-webui,访问本地IP ollama http://192.168.1.9:11434接口不通

在ollama issues可以看到对应的解决办法 https://github.com/ollama/ollama/issues/703

1、Linux ollama设置代理

2、mac设置OLLAMA_HOST

CPU和GPU对比

GPU机器上token的输出速度CPU机器快很多,但是结果上有些不同,同一个问题

写一个python脚本,获取当前登录系统的全部用户以及用户正在打开的进程名字

#GPU的结果
import os
import subprocess
import psutil

def get_users():
    # Get a list of all users on the system
    users = []
    with open('/etc/passwd', 'r') as f:
        for line in f:
            username, _, _, _, _ = line.strip().split(':')
            users.append(username)
    return users

def get_processes(username):
    # Get a list of processes running under the specified user
    process_list = []
    for p in psutil.process_iter():
        try:
            if p.username() == username:
                process_list.append(p.name())
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            pass
    return process_list

if __name__ == "__main__":
    users = get_users()
    for user in users:
        print(user)
        processes = get_processes(user)
        for process in processes:
            print(process)
#CPU的结果
import os
import subprocess
import psutil

def get_users():
    users = []
    with open("/etc/passwd", "r") as f:
        for line in f:
            user = line.split(":")[0]
            users.append(user)
    return users

def get_processes():
    processes = []
    for p in psutil.process_iter():
        process_info = {
            "pid": p.pid,
            "cmdline": p.cmdline(),
            "username": p.username()
        }
        processes.append(process_info)
    return processes

if __name__ == "__main__":
    users = get_users()
    print("Current users:")
    for user in users:
        print(user)

    processes = get_processes()
    print("\nCurrent processes:")
    for process in processes:
        print(f"PID: {process['pid']}, Cmdline: {process['cmdline']}, Username: {process['username']}")

GPU输出的脚本在服务器执行报错了,但是CPU输出的脚本在服务器执行很顺利,有些奇怪!~

写在最后

ollama这种可以部署大模型的工具提升了工作效率,从之前搜索的大量结果中快速得到有效和想要的结果,减少重复编码,提升编码效率,从此计算机过剩的性能有了用处。

留下回复

error: Content is protected !!