肇鑫的日常博客

日常

今天购物的两件小事

小事1

最近喜欢上吃河南开封的兴盛德花生。一开始是买的大包装的,一包400克。要分好几次才能吃完。于是再买就换了一家,买小包装的。每次我都买五香+麻辣的混合装各1斤。买了两次,我隐隐觉得每次都是五香的比麻辣的多。并不是每样各一斤。

于是这次买的时候,我特意看看了一下购买选项,看到写的就是五香+麻辣混合1公斤,并没有说每个是1斤。于是我这次单独下单,每样1斤,而且特意注明,我发现以往都是五香的多,麻辣的少,这次不买混合的,希望两个数量一样。

到货之后,我把花生拿出来一数。五香30包,麻辣25包。这明显差太多了。于是我找客服理论。客服还视图遮掩过去,说他们这个是称重的。我说称重也不能差出去5包啊。都20%。

既然她说是称重的,那我就称重。我小米体重秤称重,减去我的体重。结果五香1.3斤,麻辣0.8斤。因为小米体重秤是体重秤,精准度只有0.1斤。但也可以看出,的确是五香的多了,麻辣的不够。客服不愧是标准河南人,就是执拗,证据都摆在面前了。还和我狡辩说总重量是够的。我说,我是单独下的两个单子,其中一个不足。按照消费法,需要赔偿。她说可以换货或者退货退款。我说我选择赔偿。最后她说只能赔1元。我说按照消费法,最低的赔偿是1000元。我说我本来也没有非要1000元,但是你一开始就不承认有少,还非让我称重。而且你们每次都少,之前我只是没数,就算了。你们都是惯犯。而且,5袋,按照你们的价格至少也是3元。最后赔了2元。我和客服说,我以后买,如果还是这样,我还得找你要赔偿。她承诺找仓库反应这个问题。

消费者说:五香的卖得不如麻辣,那么你可以调整生产计划,少生成五香。而不是糊弄消费者。河南真是不会做生意。

小事2

今天美团买了7样东西。取货时已经装好了,一大包我就拿回来。结果发现多了一样“爆浆鹌鹑蛋”。给团长打电话,和她说如果着急就来我家拿,如果不急,我就明天给她送过去。获得了感谢。

消费者说:不是自己的不能要,这是基本素质。但是就是有人缺乏这种素质。之前我又一次点美团外卖,点的熟食猪头肉之类的。结果外卖员送错了。我给他打电话问他送哪里去了。结果他还送外卖太多,找不到了。最后外卖配送的站点的负责人打电话给我道歉,让我重新下单,微信里里给我发了红包作为补偿。而那个出错的外卖员最终也没有出现。我猜是不是羞愧地离职了?自己点没点外卖不知道吗?心安理得的吃了。这种人真是没有素质。

Ollama运行本地大模型的一些技巧

使用Ollama也有一些时间。从小白阶段,只懂按照命令行运行。到现在会自己从抱抱脸选择官方没有的模型自己进行导入。甚至创建局域网内部的服务器,使用应用调用Ollama的API。是时候总结一下Ollama本地运行大模型的一些技巧了。

运行方式

终端运行

新手一般会使用

ollama serve

启动Ollama,并使用ctrl+c结束运行。

以服务方式运行

我们还可以使用服务的方式运行Ollama。这样Ollama在系统启动之后就会在后台调用,可以随时调用。

brew services start ollama

需要注意的是,如果你是了此种方式。那么每次ollama升级之后,需要使用

brew services restart ollama

重新启动Ollama服务。

服务局域网

默认情况下,Ollama只会关注localhost的11434端口,因此只能从本机访问。局域网的其它电脑无法使用。我们可以修改设置,然后重启Ollama服务。这样局域网内的其它电脑就都可以使用Ollama了。

launchctl setenv OLLAMA_HOST "0.0.0.0"
brew services restart ollama

我们可以这个命令,查看Ollama运行的状态

lsof -i -P | grep ollama

如果你看到的是这个,就证明成功了

ollama      602 zhaoxin    3u  IPv6 0xb435894e8a5320f      0t0  TCP *:11434 (LISTEN)

如果你想固定上面的设置。那么就需要修改/opt/homebrew/opt/ollama/homebrew.mxcl.ollama.plist文件,为它添加:

<key>EnvironmentVariables</key>
<dict>
    <key>OLLAMA_HOST</key>
    <string>0.0.0.0</string>
</dict>

然后停止Ollama服务,并重新开启。注意,我发现用restart不行。必须先stop,然后重新start。不然重启之后,就还是只有localhost。

brew services stop ollama
brew services start ollama

https://github.com/ollama/ollama/blob/main/docs/faq.md
https://github.com/ollama/ollama/issues/3581

模型选择

模型的选择首选是基于功能。不同的模型擅长的领域不同。比如某些模型不支持特定的语言,某些模型具备识别图片的能力,有些模型更擅长编程等。

其次就是版本的选择。总的来说,就是越小的模型,运行时的反应越快,但是同一个模型,越大的模型的输出结果越好。因此,我们需要要在结果准确性和推理速度中作出权衡。一般来说,如果你的电脑只有8GB内存。那么你也就只能选择7B以下的模型,默认模型能跑就不错了。而如果你有16GB内存,那么你最高可以运行13B的模型。而7B模型,也可以选择参数更高的版本比如7B-4bit-K_M之类的。它会标准的标准的4bit性能要好一些。

导入模型

Ollama是llama.cpp的。它支持所有gguf格式模型文件。因此我们在抱抱脸上搜索模型名+gguf,就能下载Ollama官网没有的模型。然后可以通过创建Modefile文件的方式进行导入。格式就是:

FROM gguf文件地址

然后执行

ollama create 模型名 -f Modefile

等一会,这个模型就被导入Ollama了并能使用了。

API调用

下面这段只有程序员需要。

仿OpenAI调用

Ollama支持OpenAI的API的兼容调用方式。这样可以更好复用代码。不过这种方式调用目前只支持chat api的调用。并且不支持Vision。

https://github.com/ollama/ollama/blob/main/docs/openai.md

因此如果你使用下面这两个API的时候,还是需要Ollam的自有API。

ListModels调用

https://github.com/ollama/ollama/blob/main/docs/api.md#list-local-models

Vision调用

https://github.com/ollama/ollama/blob/main/docs/api.md#generate-a-chat-completion

关于本地跑大模型我的想法

我之前还有想法想要换成64GB内存的电脑,这样可以更好的地跑本地大模型。但是随着我对于本地大模型使用的增加,我现在开始觉得购买性能更强大的电脑跑本地大模型,可能不是一笔划算的买卖。

这是因为,最近几年,支持本地大模型的新硬件层出不穷,算力的提升没几个月就提升一个台阶。因此,现在花大钱购买的支持本地大模型产品,可能几个月后同价格就有更好的产品。

此外,本地大模型目前的运行,都还是折衷的产品。要么是模型规模小,要么是模型在使用时必须是缩限的版本。究其原因,还是可以利用的显存不足。并且,实际输出的结果和速度也不如线上。

并且线上大模型价格也在不断降低,甚至还有的处于测试阶段的大模型,使用是免费的。

那么是不是本地跑大模型就一无是处了呢?也不是。本地大模型更适合需要消耗大量token的领域。比如,图片识别(以文搜图)。跑这类应用,如果使用在线大模型,会消耗大量token,不够经济。此时用本地大模型来跑,就划算很多了。