标签 github 下的文章

Go早期的那些布道者

本文永久链接 – https://tonybai.com/2024/05/17/the-early-evangelists-of-go

Go自2009年开源至今已经快15年了!这期间,有很多人对Go语言的发展做出了重要贡献,起到了至关重要的作用,他们被视为Go语言的早期布道者和鼓吹者。他们向Go社区传达着Go的价值观、Go的最新发展、Go的使用方法以及最佳实践。

这些人有来自Go团队的,有来自Google但非Go团队的,也有Go的早期采纳者和贡献者。如今这些人的状况不尽相同。有些人依然在活跃在Go团队中,为Go的演进持续做着贡献;有些人由于各种原因,已经退居二线,但仍心系Go的发展;还有一些人则逐渐淡出Go社区,或者说不再复当年的那种热忱。

不过,无论哪种,这些人为Go语言的推广和发展都做出了不可磨灭的贡献,值得Gopher们铭记。在这篇文章中,我就来说说这些Go早期的布道师。也可以让后进入Go阵营的Gopher们了解一下过去的事情。

注:这里是不完全统计,还有很多早期Go布道师做出了重要贡献,限于篇幅,这里就不一一列举细数了。

Rob Pike

Rob Pike 是Go语言的共同创始人之一,他在2007年与Ken Thompson和Robert Griesemer一起开始了Go语言的开发。

作为一名经验丰富的计算机科学家,Rob Pike曾在贝尔实验室工作,参与了Plan 9和Inferno操作系统的开发,UTF-8也是他的杰作。此外,他还是C语言和UNIX操作系统的早期贡献者之一。

Rob Pike为Go语言的设计和实现做出了重大贡献。他的设计理念强调简洁、并发和高效,这些理念深深影响了Go语言的核心特性。在Go语言的早期发展阶段,Rob Pike几乎主导了Go语言规范的制定,并负责了许多关键语言特性的开发。在Ken Thompson退休后,他成为了Go语言第一代的领军人物。

除了技术贡献,Rob Pike还是最为积极的Go语言推广者。他在Google内外的各种会议和技术活动中发表演讲,介绍Go语言的优势、应用场景以及使用方法。他的演讲风格生动有趣,深受开发者的喜爱。此外,Rob Pike还撰写了大量关于Go语言的博客和技术文档,为社区提供了宝贵的学习资源。


截图来自golang.design

他的“3 Day Go Course”也是最早、最权威的Go教程,即便在今天看来略有些Outdated了:)。

注:关于Rob Pike的早期3-days Go Course ppt,可以在这里下载https://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15440-f11/go/doc/

现如今,Rob Pike已经从Google退休了,并长居澳大利亚,并继续为Go语言的发展做着贡献。尽管他不再像早期那样频繁地参与社区活动,但他的影响力依然深远,Go 1.18泛型发布前,Rob Pike就及时纠正了Go团队对泛型的支持策略

Rob Pike的工作为Go语言奠定了坚实的基础,使其成为现代编程语言中的一颗璀璨明珠。

Robert Griesemer

Robert Griesemer是Go语言的另一位共同创始人。他在加入Go团队之前,他曾参与Google V8 JavaScript引擎、Sawzall语言、Java HotSpot虚拟机和Strongtalk系统的工作,拥有丰富的编程语言设计和实现经验。

Griesemer在设计和实现Go语言方面发挥了关键作用,尤其是在语法和编译器的开发上。Griesemer的设计理念强调语言的简洁性和易用性,这使得Go语言在开发者中迅速获得了广泛的认可。他致力于优化编译器性能,使Go程序能够高效地运行在各种平台上。Griesemer还参与了Go语言标准库的设计和实现,为开发者提供了丰富的工具和资源。

在Go语言的推广方面,Griesemer同样不遗余力。他经常参与技术会议和社区活动,分享Go语言的设计理念和最佳实践,他也是唯一在GopherChina上现场进行分享的Go语言之父。

他的技术讲座深入浅出,帮助许多开发者快速上手Go语言。此外,Griesemer还与其他团队成员合作撰写了多篇技术论文和博客,进一步推动了Go语言的普及。


截图来自golang.design

目前,Griesemer依然在Google Go团队工作,奋战在Go语言的开发和优化的第一线。他和Ian Lance Taylor共同设计和实现了Go泛型机制,大幅提升了Go的表达能力。他的工作对Go语言的成功起到了至关重要的作用,使其成为许多大型项目和企业的首选开发语言。

Brad Fitzpatrick

Brad Fitzpatrick是一位资深的美国程序员。在加入Go团队之前,Fitzpatrick就因创建LiveJournal和Memcached而闻名。后来加入Google,成为Go团队的重要成员,并在Go语言社区中拥有很高的声誉。

在Go语言的发展过程中,Fitzpatrick为许多关键组件做出了贡献,尤其是在网络库和并发编程模型方面。他创建了诸如HTTP包和context包等核心库,这些库广泛应用于Go语言的网络编程中。

Fitzpatrick不仅在技术上对Go做出了杰出贡献,他还是Go社区活动的积极参与者,是Go团队中参与社区活动的“典范”。他经常在技术会议和用户组活动中发表演讲,分享自己的经验和最佳实践。Fitzpatrick的工作帮助许多开发者更好地理解和使用Go语言,推动了社区的发展。


截图来自golang.design

几年前,Fitzpatrick离开了Google并重新创业,他联创的Tailscale基于WireGuard和Go打造号称世界上最容易使用的安全private network产品。一些Go commiter和Ex-googler也被Fitzpatrick招入tailscale。Tailscale团队后续也成为了Go的重要贡献团队,比如go4org下的很多实用包,像internunsafe-assume-no-moving-gcmem等。其中的intern还是Go 1.23中加入的unique包的灵感之源。

仍然活跃在Go开源社区的Fitzpatrick依旧继续为Go语言和其他开源项目做着贡献,他的热情和奉献精神使他成为Go社区中备受尊敬的领袖之一。

Andrew Gerrand

Andrew Gerrand是Go团队的早期成员之一,他为Go团队工作七年,早期也是Go项目的Top10贡献者。但他在Go团队的主要职责其实是围绕该语言构建社区并管理开源项目。Gerrand的工作帮助许多开发者快速上手Go语言。他编写的Go语言文章深入浅出,覆盖了从基础语法到高级特性的方方面面。此外,Gerrand还创建了Go Playground,一个在线编程环境,使开发者能够方便地编写和运行Go代码。

除了技术文档,Gerrand还积极参与社区活动。他组织和主持了多次Go语言会议(比如GopherCon)和用户组活动,推动了Go社区的建设和发展,是Rob Pike做Go社区推广的好搭档。。Gerrand还经常在Go语言的官方博客上发表文章,介绍Go的最新特性和最佳实践,官博早期的大部分文章都出自他手。由此看来,Gerrand在早期对Go语言的推广和社区建设做出过重要贡献。

从2016年开始,他跟随Rob Pike转战Upspin项目,这个项目活跃了一年多,虽然现在依然在更新,但关注度目前已不是很高。Gerrand目前已经远离Go项目开发,并且很少撰文或参与Go社区活动。但他仍然在upspin、deps.dev等google项目上使用Go进行着开发和维护工作。

如果要关注Gerrand的日常,可以在X上follow他的账号

Russ Cox

Russ Cox是早期Go语言团队的重要成员之一,对Go语言的设计和实现做出了重大贡献。他拥有麻省理工学院的计算机科学博士学位,曾在贝尔实验室和Rob Pike一起在Plan9项目上工作过。Cox在加入Google后,成为Go语言项目的核心开发者之一。

Russ Cox对Go的贡献是全方位的,无论在语言特性、工具链、社区推广等方面都有很大建树。这也使得他在Rob Pike退休后,迅速成为了Go语言的第二代领军人物。

近几年进入Go阵营的开发者对Russ Cox不可谓不熟悉,他主导了vendor、type alias、Go module泛型等设计和实现,直接引领了Go的演进方向。

近几年,Russ Cox经常在GopherCon大会上代表Go团队发表主旨演讲,并在官博亲自撰文,向Go社区传达Go语言的演进思路与方向。经过多年历练,Russ Cox逐渐扛起了Go这杆大旗,接过了Rob Pike手中沉甸甸的Go接力棒。

Dmitry Vyukov

Dmitry Vyukov是一位俄罗斯大神级程序员,英特尔并行编程黑带级程序员。加入Google后一直从事性能优化方面的工作,包括并发无锁算法、执行跟踪和竞争检测工具、fuzzing工具等。Vyukov虽然不是Go团队成员,但他对Go的贡献却是核心级的,主要包括:

除了技术贡献,Vyukov早期也会参与一些会议和社区活动,虽然不多,主要是推广Go execution tracer和go-fuzz工具

目前,Vyukov依然在Google工作,也在继续为Go语言的发展做着力所能及的贡献。

Steve Francia

Steve Francia是早起Go语言社区的重要成员之一,对Go语言的推广和社区建设做出了重要贡献。Francia在加入Google之前,曾在MongoDB、Docker公司工作,拥有丰富的开发和管理经验。之后他加入Google,在Go语言项目中担任开发者关系经理,负责推动Go语言在企业中的应用。

Francia最为人称道的是他开发并开源的几个Go项目,包括goHugoCobraviper等。其中的hugo,一个基于Go语言的静态网站生成器,广受开发者的欢迎。

除了技术贡献,Francia还致力于社区建设。他组织和主持了多次Go语言会议和用户组活动,推动了Go社区的发展。Francia还在其个人博客上撰写了大量关于Go语言的技术文档,为开发者提供了宝贵的学习资源。

目前,Francia已经离开了Google和Go团队,并在一家位于纽约的初创公司担任CTO。目前在Go社区,他已不再像以前那样活跃,但他的几个开源项目依然保持积极开发中,也有人协助他打理这些开源项目。

总之,Francia的工作对Go语言的普及和社区建设起到了重要的作用,帮助Go成为开发者们最喜爱的编程语言之一。

Jaana Dogan

Jaana Dogan是这个布道者列表中唯一的女性程序员。她曾是Go语言团队的一名工程师,对Go语言的性能优化、诊断和工具开发做出了重要贡献。但她在Go团队工作的时间并不长,很快就离开了Go团队,原因未知。目前她供职在github。

Dogan对社区的贡献主要体现在其关于Go的独特观点的博客文章诊断相关的技术文档以及其开源的诸多项目,比如:heygopsgovanityurlsstatik等。这些项目都不大,但却十分实用。

很多gopher中使用hey进行http压测,gops则是高频使用的Go辅助诊断工具,govanityurls则是我的《小厂内部私有Go module拉取方案》的重要组件。statik也是Go 1.16版本引入go:embed之前在可执行文件中嵌入静态文件的一个可选工具。

Dogan在社区中以其深入的技术见解和乐于分享的态度,赢得了广泛的尊重和赞誉。不过,离开Google后,尤其是进入github后,Dogan在Go上面的投入似乎变少了很多,博客文章基本也不更新了,也没有新的开源项目产出,这对Go社区来说算是一个“损失”吧。

Brian KetelsenErik St. Martin

将Brian Ketelsen和Erik St. Martin放在一起说,是因为他们一起对Go语言以及Go社区的最大贡献就是共同创办了GopherCon,这是全球最大也是最权威的Go语言开发者大会,每年都会吸引大量来自世界各地的Go开发者。GopherCon不仅是一个技术交流的平台,也是Go社区的重要聚会,促进了开发者之间的交流与合作。两人在组织和推动GopherCon的过程中,展示了他们对Go语言的热情和奉献精神。今年(2024年)也是GopherCon诞生的第10个年头,想必这又是一场Go语言和Go社区的盛会!

除了会议组织和社区活动,Ketelsen和St. Martin还与William Kennedy联合撰写了关于Go语言的技术书籍《Go in Action》。这本书深入浅出地介绍了Go语言的基础知识和实际应用,为开发者提供了系统的学习资源。此外,他们还参与了多个开源项目,为Go语言的生态系统做出了重要贡献。

目前,Ketelsen和St. Martin都供职于微软公有云团队,仍然活跃在Go社区。

Francesc Campoy

Francesc Campoy是Go语言社区的知名讲师和布道者,对Go语言的推广和普及做出了重要贡献。Campoy在加入Google之前,曾在西班牙的一家软件公司工作,拥有丰富的开发经验。他在Go语言项目中担任开发者关系经理,负责向开发者推广Go语言。Campoy也曾作为GopherChina的嘉宾在多年前来到中国布道!

Campoy的工作帮助许多开发者快速上手Go语言。他制作了一系列高质量的Go语言视频教程“Just for func”,涵盖了从基础语法到高级特性的方方面面。这些视频教程深入浅出,受到了广泛的欢迎。此外,Campoy还创建了Go语言的官方YouTube频道,定期发布技术讲座和演示,进一步推动了Go语言的普及。

2016年,Campoy从Google离职,加入Dgraph Labs,负责原生GraphQL数据库dgraph以及键值数据库badger的开发。后来Dgraph labs内讧,Campoy转投到apple名下。

进入Apple后,Campoy就渐渐从Go社区淡出了。但他仍然会进行一些Go项目的开发,Github的activity中有他的一些活动记录,但更多地是对私有仓库的贡献。

Dave Cheney

如果说Go团队之外,谁是大家最喜欢的Go布道师和意见领袖,矮胖子Dave Cheney肯定可以拿到数一数二的选票。

相信早期学过Go语言的Gopher们,没有没读过Dave Cheney的个人博客的。他的博客从2010开始写的内容就几乎都与Go相关,并且思维缜密,写作风格深入浅出,颇受Gopher欢迎。

很多人还参与过他在世界各地举办的Go用户活动。Dave Cheney也是来到中国GopherChina大会最多的Go布道师,为中国Gopher带来了精彩的演讲以及极具干货的大会前Workshop

除了技术资料外,Dave Cheney早期在Go项目的issue上、在go-nuts邮件列表以及stackoverflow上也是非常活跃,非常乐于帮助那些想给Go项目做出贡献的gopher融入。同时他在github.com/pkg下开源的诸多项目也非常实用(比如https://github.com/pkg/errors),深受大家欢迎。

更多关于Dave Cheney对Go语言的贡献,可以阅读其个人博客的about页面

不过不知何故,从2021年初开始,Dave Cheney的博客开始停更,他在社区的声音也逐渐消失。直到今年年初,Dave Cheney才又更新了一篇名为“Microblog: TestMain can cause one to question reality”的文章。

不过从Dave Cheney的github Contribution activity来看,Dave仍然在大量的编写代码,只是这些代码是commit到private仓库的。

希望Dave Cheney能早日回归Go社区,并恢复当初的那份热忱。

Bill Kennedy

Bill Kennedy是Go语言社区的知名讲师和布道者,对Go语言的推广和普及做出了重要贡献,并且这种贡献一直持续至今。

Kennedy是ardan labs的CTO,也是该公司的主要讲师,他最拿手的Ultimate Go培训已经开办了十多年了,每年都会在全球进行很多场培训,此外,GopherCon大会前的Workshop总是少不了Bill Kennedy的training。

除了Training,Ardan Labs早期的博客文章也堪称精品,不少Gopher因这些文章而受益!Kennedy的工作主要是帮助许多开发者快速上手Go语言。他还撰写了多本关于Go语言的技术书籍,如《Go in Action》和《Ultimate Go》。这些书籍深入浅出,涵盖了从基础语法到高级特性的方方面面,为开发者提供了系统的学习资源。

除了技术培训,Kennedy还积极参与Go语言演进和Go社区活动之中,这其中一个最典型的事件就是2019年他代表广大Gopher用户发给Go团队的公开信,极力组织不成熟的try关键字提案进入Go语言。

目前,Kennedy依然活跃在Go社区,继续推动Go语言的发展和普及。

Mat Ryer

Mat Ryer是Go语言社区的一位资深开发者和布道者,他是一名英国程序员。他之前在Go社区非常活跃,积极参与技术会议和社区活动,分享Go语言在实际项目中的应用经验和最佳实践,其中最持久的莫过于主持Go Time播客了!”Go Time”是一个专注于Go编程语言的播客节目。该播客由Changelog Media出品,主要内容涵盖了Go语言的新特性、最佳实践、社区新闻、工具和库的推荐,以及与Go生态系统相关的各种话题。节目通常会邀请Go社区的知名开发者、贡献者和专家作为嘉宾,分享他们的经验和见解。截至写本文时,该播客已经发布了315期,每期都有音频和文字稿

除了上述活动,Mat Ryer还是《Go Programming Blueprints》一书的作者。

如今Mat Ryer依然活跃在Go社区,他供职于Grafana,依然从事着Go语言开源项目的开发,同时主持Go Time播客以及组织和参与各种Go用户会议。

参考资料


Gopher部落知识星球在2024年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。同时,我们也会加强代码质量和最佳实践的分享,包括如何编写简洁、可读、可测试的Go代码。此外,我们还会加强星友之间的交流和互动。欢迎大家踊跃提问,分享心得,讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落,享受coding的快乐! 欢迎大家踊跃加入!

img{512x368}
img{512x368}

img{512x368}
img{512x368}

著名云主机服务厂商DigitalOcean发布最新的主机计划,入门级Droplet配置升级为:1 core CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687 开启你的DO主机之路。

Gopher Daily(Gopher每日新闻) – https://gopherdaily.tonybai.com

我的联系方式:

  • 微博(暂不可用):https://weibo.com/bigwhite20xx
  • 微博2:https://weibo.com/u/6484441286
  • 博客:tonybai.com
  • github: https://github.com/bigwhite
  • Gopher Daily归档 – https://github.com/bigwhite/gopherdaily

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

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

本文永久链接 – https://tonybai.com/2024/04/23/playing-with-meta-llama3-8b-on-cpu-using-ollama-and-openwebui

2024年4月18日,meta开源了Llama 3大模型,虽然只有8B70B两个版本,但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番,本人亲测Llama3-70B版本的推理能力十分接近于OpenAI的GPT-4,何况还有一个400B的超大模型还在路上,据说再过几个月能发布。

Github上人气巨火的本地大模型部署和运行工具项目Ollama也在第一时间宣布了对Llama3的支持

近期除了学习Rust,还有就在研究如何将LLM应用于产品中。以前走微调的路径行不通,最近的RAG(Retrieval-Augmented Generation)和Agent路径则让我看到一丝曙光。不过实施这两个路径的前提是一个强大的LLM,而开源的meta Llama系列LLM则是不二之选。

在这篇文章中,我就先来体验一下如何基于Ollama安装和运行Meta Llama3-8B大模型,并通过兼容Ollama API的OpenWebUI建立对大模型的Web图形化访问方式。

1. 安装Ollama

Ollama是一个由Go实现的、可以在本地丝滑地安装和运行各种开源大模型的工具,支持目前国内外很多主流的开源大模型,比如Llama、MistralGemmaDBRXQwenphivicunayifalcon等。其支持的全量模型列表可以在Ollama library查看。

Ollama的安装采用了“curl | sh”,我们可以一键将其下载并安装到本地:

$curl -fsSL https://ollama.com/install.sh | sh
>>> Downloading ollama...
######################################################################## 100.0%
>>> Installing ollama to /usr/local/bin...
>>> Creating ollama user...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink from /etc/systemd/system/default.target.wants/ollama.service to /etc/systemd/system/ollama.service.
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.
WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.

我们看到Ollama下载后启动了一个ollama systemd service,这个服务就是Ollama的核心API服务,它常驻内存。通过systemctl可以确认一下该服务的运行状态:

$systemctl status ollama
● ollama.service - Ollama Service
   Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2024-04-22 17:51:18 CST; 11h ago
 Main PID: 9576 (ollama)
    Tasks: 22
   Memory: 463.5M
   CGroup: /system.slice/ollama.service
           └─9576 /usr/local/bin/ollama serve

另外我对Ollama的systemd unit文件做了一些改动,我修改了一下Environment的值,增加了”OLLAMA_HOST=0.0.0.0″,这样便于后续在容器中运行的OpenWebUI可以访问到Ollama API服务:

# cat /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/root/.cargo/bin:/usr/local/cmake/bin:/usr/local/bin:.:/root/.bin/go1.21.4/bin:/root/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" "OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=default.target

修改后执行下面命令使之生效:

$systemctl daemon-reload
$systemctl restart ollama

2. 下载和运行大模型

Ollama支持一键下载和运行模型。我手里有一个16/32G的云虚机,但没有GPU,因此这里我使用的是Llama3-8B指令微调后的用于chat/diaglogue的模型,我们只需要通过下面命令便可以快速下载并运行该模型(4bit量化的):

$ollama run llama3
pulling manifest
pulling 00e1317cbf74...   0% ▕                ▏    0 B/4.7 GB
pulling 00e1317cbf74...   7% ▕█               ▏ 331 MB/4.7 GB   34 MB/s    2m3s^C
pulling manifest
pulling manifest
pulling manifest
pulling manifest
pulling 00e1317cbf74...  61% ▕█████████       ▏ 2.8 GB/4.7 GB   21 MB/s   1m23s^C
... ...

下载和执行成功后,该命令行便会等待你的问题输入,我们随便输入一个关于Go的问题,下面是输出结果:

$ollama run llama3
>>> could you tell me something about golang language?
Go!

Here are some interesting facts and features about the Go programming language:

**What is Go?**

Go, also known as Golang, is a statically typed, compiled, and designed to be concurrent and garbage-collected language. It
was developed by Google in 2009.

**Key Features:**

1. **Concurrency**: Go has built-in concurrency support through goroutines (lightweight threads) and channels (communication
mechanisms). This makes it easy to write concurrent programs.
2. **Garbage Collection**: Go has a automatic garbage collector, which frees developers from worrying about memory
management.
3. **Static Typing**: Go is statically typed, meaning that the type system checks the types of variables at compile time,
preventing type-related errors at runtime.
4. **Simple Syntax**: Go's syntax is designed to be simple and easy to read. It has a minimalistic approach to programming
language design.
... ...

推理速度大约在5~6个token吧,尚可接受,但这个过程是相当耗CPU:

除了通过命令行方式与Ollama API服务交互之外,我们还可以用Ollama的restful API:

$curl http://localhost:11434/api/generate -d '{
>   "model": "llama3",
>   "prompt":"Why is the sky blue?"
> }'
{"model":"llama3","created_at":"2024-04-22T07:02:36.394785618Z","response":"The","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:36.564938841Z","response":" color","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:36.745215652Z","response":" of","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:36.926111842Z","response":" the","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.107460031Z","response":" sky","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.287201658Z","response":" can","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.468517901Z","response":" vary","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.649011829Z","response":" depending","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.789353456Z","response":" on","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:37.969236546Z","response":" the","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:38.15172159Z","response":" time","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:38.333323271Z","response":" of","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:38.514564929Z","response":" day","done":false}
{"model":"llama3","created_at":"2024-04-22T07:02:38.693824676Z","response":",","done":false}
... ...

不过我日常使用大模型最为广泛的方式还是通过Web UI进行交互。目前有很多支持Ollama API的Web & Desktop项目,这里我们选取Open WebUI,它的前身就是Ollama WebUI。

3. 安装和使用Open WebUI与大模型交互

最快体验Open WebUI的方式当然是使用容器安装,不过官方镜像站点ghcr.io/open-webui/open-webui:main下载太慢,我找了一个位于Docker Hub上的个人mirror镜像,下面是在本地安装Open WebUI的命令:

$docker run -d -p 13000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://host.docker.internal:11434  --name open-webui --restart always dyrnq/open-webui:main

容器启动后,我们在host上访问13000端口即可打开Open WebUI页面:

首个注册的用户,将会被Open WebUI认为是admin用户!注册登录后,我们就可以进入首页:

选择model后,我们便可以输入问题,并与Ollama部署的Llama3模型对话了:

注:如果Open WebUI运行不正常,可以通过查看openwebui的容器日志来辅助诊断问题。

Open WebUI的功能还有很多,大家可以自行慢慢挖掘:)。

4. 小结

在本文中,我介绍了Meta开源的Llama 3大模型以及Ollama和OpenWebUI的使用。Llama 3是一个强大的AI大模型,实测接近于OpenAI的GPT-4,并且还有一个更强大的400B模型即将发布。Ollama是一个用于本地部署和运行大模型的工具,支持多个国内外开源模型,包括Llama在内。我详细介绍了如何安装和运行Ollama,并使用Ollama下载和运行Llama3-8B模型。展示了通过命令行和REST API与Ollama进行交互,以及模型的推理速度和CPU消耗。此外,我还提到了OpenWebUI,一种兼容Ollama API的Web图形化访问方式。通过Ollama和OpenWebUI,大家可以方便地在CPU上使用Meta Llama3-8B大模型进行推理任务,并获得满意的结果。

后续,我将进一步研究如何将Llama3应用于产品中,并探索RAG(Retrieval-Augmented Generation)和Agent技术的潜力。这两种路径可以为基于Llama3的大模型应用开发带来新的可能性。


Gopher部落知识星球在2024年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。同时,我们也会加强代码质量和最佳实践的分享,包括如何编写简洁、可读、可测试的Go代码。此外,我们还会加强星友之间的交流和互动。欢迎大家踊跃提问,分享心得,讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落,享受coding的快乐! 欢迎大家踊跃加入!

img{512x368}
img{512x368}

img{512x368}
img{512x368}

著名云主机服务厂商DigitalOcean发布最新的主机计划,入门级Droplet配置升级为:1 core CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687 开启你的DO主机之路。

Gopher Daily(Gopher每日新闻) – https://gopherdaily.tonybai.com

我的联系方式:

  • 微博(暂不可用):https://weibo.com/bigwhite20xx
  • 微博2:https://weibo.com/u/6484441286
  • 博客:tonybai.com
  • github: https://github.com/bigwhite
  • Gopher Daily归档 – https://github.com/bigwhite/gopherdaily

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats