最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

我如何在笔记本运行GPT-4级别的模型

业界 admin 12浏览 0评论

Meta的新模型Llama 3.3 70B是一个真正的GPT-4级别的大型语言模型,它可以在我的笔记本电脑上运行。

仅仅在20个月前,我还在为能在同一台机器上运行感觉达到GPT-3级别的模型而感到惊讶。在过去的两年里,能够在消费级硬件上访问的模型质量有了巨大的提升。

我的笔记本电脑是一台64GB的MacBook Pro M2,我在2023年1月购买的——这是在ChatGPT最初发布两个月后。我所有在笔记本电脑上运行大型语言模型(LLM)的实验都使用了这台机器。

How I ran Llama 3.3 70B on my machine using Ollama

我不认为这个模型在少于我64GB的RAM下能很好地工作。我第一次尝试时,它消耗了所有剩余的可用内存,导致我的Mac崩溃了!第二次尝试时,我确保不要同时运行Firefox和VS Code,它就正常工作了。

我使用了Ollama。安装它,然后运行这个命令来获取模型:

ollama pull llama3.3

这将42GB的数据获取到我的~/.ollama/models/blobs目录中。

我使用我的LLM工具来运行提示,因为这样既可以自动将提示和响应记录到SQLite数据库中。首先我安装了llm-ollama插件:

llm install llm-ollama

然后在Ollama本地服务器运行的情况下,我可以运行这个命令:

llm models

并在列表中看到:

Ollama: llama3.3:latest (别名:lamma3.3)

Putting the model through its paces

这意味着我可以这样运行提示:

llm -m llama3.3 'Write a letter to the mayor of Half Moon Bay CA advocating for the installation of cosy boxes for Pelicans in the harbor'

并得到这样的回应开头:

[Your Name]
[Your Address]
Half Moon Bay, CA [Zip Code]
[Email Address]
[Phone Number]
[Date]
The Honorable Mayor, Deborah Penrose
City of Half Moon Bay
501 Main Street
Half Moon Bay, CA 94019
Dear Mayor Penrose,
I am writing to propose an innovative and unique initiative that would not only enhance the beauty of our picturesque harbor but also provide a safe haven for one of our beloved coastal residents: the California Brown Pelican. I am excited to advocate for the installation of cozy boxes specifically designed for pelicans in the Half Moon Bay harbor. [...]

(Deborah Penrose在2016年12月至2017年12月担任Half Moon Bay市长一年——所以这里有一些相当精细的世界知识,即使它与当前无关。)

这是完整的记录,包括我运行后续命令llm -c 'translate that to spanish'得到回应的记录。

接下来,我尝试了一个简单的编程挑战。我喜欢使用Claude Artifacts构建简单的单页应用程序,我的笔记本电脑上的Llama 3.3也能做到吗?

llm -m llama3.3 'produce HTML with embedded CSS and JavaScript - no react, no dependencies - for an app that takes a URL to a YouTube video and outputs images along with visible URLs for all known thumbnails for that video'

这是它产生的代码(完整的记录在这里):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>YouTube Thumbnail Extractor</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        #thumbnails {
            display: flex;
            flex-wrap: wrap;
        }
        .thumbnail {
            margin: 10px;
        }
        img {
            max-width: 150px;
            max-height: 150px;
            object-fit: cover;
        }
    </style>
</head>
<body>
<h2>YouTube Thumbnail Extractor</h2>
<input type="text" id="youtubeUrl" placeholder="Enter YouTube video URL">
<button onclick="extractThumbnails()">Extract Thumbnails</button>
<div id="thumbnails"></div>
<script>
    function extractThumbnails() {
        const youtubeUrl = document.getElementById('youtubeUrl').value;
        const videoId = getYoutubeVideoId(youtubeUrl);
        
        if (!videoId) {
            alert("Could not parse YouTube video ID from the URL.");
            return;
        }
        
        const thumbnailSizes = ['default', 'mqdefault', 'hqdefault', 'sddefault', 'maxresdefault'];
        const thumbnailsDiv = document.getElementById('thumbnails');
        thumbnailsDiv.innerHTML = ''; // Clear previous results
        
        thumbnailSizes.forEach(size => {
            const thumbnailUrl = `https://img.youtube/vi/${videoId}/${size}.jpg`;
            const img = document.createElement('img');
            img.src = thumbnailUrl;
            img.alt = `${size} thumbnail`;
            img.className = 'thumbnail';
            
            const link = document.createElement('a');
            link.href = thumbnailUrl;
            link.text = size;
            link.style.display = 'block';
            
            const div = document.createElement('div');
            div.appendChild(img);
            div.appendChild(link);
            thumbnailsDiv.appendChild(div);
        });
    }
    
    function getYoutubeVideoId(url) {
        const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
        const match = url.match(regExp);
        return (match && match[7].length == 11) ? match[7] : false;
    }
</script>
</body>
</html>

再次强调,这里展示了一些世界知识:它知道YouTube视频通常有default(默认)、mqdefault(中等质量默认)、hqdefault(高清晰度默认)、sddefault(标准清晰度默认)和maxresdefault(最大分辨率默认)这些不同的缩略图版本。

虽然它没有我和Claude迭代过的版本那么好,但这仍然表明Llama3.3能够在运行在我的Mac上的同时,一次性生成一个完整的交互式应用程序。

How does it score?

对于这类模型,检查独立的基准测试总是很有用。

我目前最喜欢的一个基准测试是LiveBench,它自称为“一个具有挑战性、无污染的大型语言模型(LLM)基准测试”,并且用一系列不同的任务测试了大量的模型。

在他们的表格中,llama-3.3-70b-instruct-turbo目前排在第19位,这个位置领先于2024年3月发布后我最喜欢的几个模型之一的Claude3Opus,并且紧随4月的GPT-4 Turbo和9月的GPT-4o之后。

值得指出的是,这个排名是基于多个评估的平均值进行排序的,而Llama 3.3 70B在“IF”(指令遵循)评估中不知何故目前得分位居榜首,这可能影响了平均值。

Honorable mentions

Llama 3.3是目前我在自己硬件上运行过的模型中给我留下最深刻印象的,但最近我还有许多其他积极的体验。

上个月我写了关于Qwen2.5-Coder-32B的介绍,这是阿里巴巴Qwen研究团队推出的一个Apache 2.0许可的模型,它在代码方面也给了我令人印象深刻的结果。

几周前,我尝试了另一个Qwen模型,QwQ,它实现了与OpenAI的o1系列类似的思维链模式,但同样可以在我的设备上舒适地运行。

Meta的Llama 3.2系列模型也很有趣:微小的1B和3B模型(那些甚至应该能在树莓派上运行),它们的能力远超我的预期——加上Meta首次推出的多模态视觉模型,大小分别为11B和90B。我在九月份写了关于这些的内容。

Is performance about to plateau?

我对围绕大型语言模型(LLM)达到平台期的持续讨论大多持怀疑态度。我个人最兴奋的领域是多模态(将图像、音频和视频作为输入)和模型效率。这两方面在过去一年中都取得了巨大的飞跃。

我并不特别关心“人工通用智能(AGI)”。我希望模型能够快速且经济地完成我要求它们做的有用事情——这正是我在过去十二个月中越来越多地得到的。

即使这些工具的进步现在完全停止,我仅凭已经下载并存储在U盘上的模型,就足以让我忙碌且高效地工作多年。

Bonus: running Llama 3.3 70B with MLX

我在这篇文章中专注于Ollama,因为它是最简单的选项,但我也设法使用苹果出色的MLX库运行了一个Llama3.3的版本,MLX库刚刚庆祝了它的一周年。

以下是我如何使用MLX和uv来启动一个临时虚拟环境来运行模型的方法:

uv run --with mlx-lm --python 3.12 python

这给了我一个Python解释器,其中mlx-lm是可用的。然后我运行了这个命令:

prompt = "Generate an SVG of a pelican riding a bicycle, start with <svg>"messages = [{"role": "user", "content": prompt}]
prompt2 = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
response = generate(
    model, tokenizer, prompt=prompt2, verbose=True
)

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

二、AI大模型视频教程

三、AI大模型各大学习书籍

四、AI大模型各大场景实战案例

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

Meta的新模型Llama 3.3 70B是一个真正的GPT-4级别的大型语言模型,它可以在我的笔记本电脑上运行。

仅仅在20个月前,我还在为能在同一台机器上运行感觉达到GPT-3级别的模型而感到惊讶。在过去的两年里,能够在消费级硬件上访问的模型质量有了巨大的提升。

我的笔记本电脑是一台64GB的MacBook Pro M2,我在2023年1月购买的——这是在ChatGPT最初发布两个月后。我所有在笔记本电脑上运行大型语言模型(LLM)的实验都使用了这台机器。

How I ran Llama 3.3 70B on my machine using Ollama

我不认为这个模型在少于我64GB的RAM下能很好地工作。我第一次尝试时,它消耗了所有剩余的可用内存,导致我的Mac崩溃了!第二次尝试时,我确保不要同时运行Firefox和VS Code,它就正常工作了。

我使用了Ollama。安装它,然后运行这个命令来获取模型:

ollama pull llama3.3

这将42GB的数据获取到我的~/.ollama/models/blobs目录中。

我使用我的LLM工具来运行提示,因为这样既可以自动将提示和响应记录到SQLite数据库中。首先我安装了llm-ollama插件:

llm install llm-ollama

然后在Ollama本地服务器运行的情况下,我可以运行这个命令:

llm models

并在列表中看到:

Ollama: llama3.3:latest (别名:lamma3.3)

Putting the model through its paces

这意味着我可以这样运行提示:

llm -m llama3.3 'Write a letter to the mayor of Half Moon Bay CA advocating for the installation of cosy boxes for Pelicans in the harbor'

并得到这样的回应开头:

[Your Name]
[Your Address]
Half Moon Bay, CA [Zip Code]
[Email Address]
[Phone Number]
[Date]
The Honorable Mayor, Deborah Penrose
City of Half Moon Bay
501 Main Street
Half Moon Bay, CA 94019
Dear Mayor Penrose,
I am writing to propose an innovative and unique initiative that would not only enhance the beauty of our picturesque harbor but also provide a safe haven for one of our beloved coastal residents: the California Brown Pelican. I am excited to advocate for the installation of cozy boxes specifically designed for pelicans in the Half Moon Bay harbor. [...]

(Deborah Penrose在2016年12月至2017年12月担任Half Moon Bay市长一年——所以这里有一些相当精细的世界知识,即使它与当前无关。)

这是完整的记录,包括我运行后续命令llm -c 'translate that to spanish'得到回应的记录。

接下来,我尝试了一个简单的编程挑战。我喜欢使用Claude Artifacts构建简单的单页应用程序,我的笔记本电脑上的Llama 3.3也能做到吗?

llm -m llama3.3 'produce HTML with embedded CSS and JavaScript - no react, no dependencies - for an app that takes a URL to a YouTube video and outputs images along with visible URLs for all known thumbnails for that video'

这是它产生的代码(完整的记录在这里):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>YouTube Thumbnail Extractor</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        #thumbnails {
            display: flex;
            flex-wrap: wrap;
        }
        .thumbnail {
            margin: 10px;
        }
        img {
            max-width: 150px;
            max-height: 150px;
            object-fit: cover;
        }
    </style>
</head>
<body>
<h2>YouTube Thumbnail Extractor</h2>
<input type="text" id="youtubeUrl" placeholder="Enter YouTube video URL">
<button onclick="extractThumbnails()">Extract Thumbnails</button>
<div id="thumbnails"></div>
<script>
    function extractThumbnails() {
        const youtubeUrl = document.getElementById('youtubeUrl').value;
        const videoId = getYoutubeVideoId(youtubeUrl);
        
        if (!videoId) {
            alert("Could not parse YouTube video ID from the URL.");
            return;
        }
        
        const thumbnailSizes = ['default', 'mqdefault', 'hqdefault', 'sddefault', 'maxresdefault'];
        const thumbnailsDiv = document.getElementById('thumbnails');
        thumbnailsDiv.innerHTML = ''; // Clear previous results
        
        thumbnailSizes.forEach(size => {
            const thumbnailUrl = `https://img.youtube/vi/${videoId}/${size}.jpg`;
            const img = document.createElement('img');
            img.src = thumbnailUrl;
            img.alt = `${size} thumbnail`;
            img.className = 'thumbnail';
            
            const link = document.createElement('a');
            link.href = thumbnailUrl;
            link.text = size;
            link.style.display = 'block';
            
            const div = document.createElement('div');
            div.appendChild(img);
            div.appendChild(link);
            thumbnailsDiv.appendChild(div);
        });
    }
    
    function getYoutubeVideoId(url) {
        const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
        const match = url.match(regExp);
        return (match && match[7].length == 11) ? match[7] : false;
    }
</script>
</body>
</html>

再次强调,这里展示了一些世界知识:它知道YouTube视频通常有default(默认)、mqdefault(中等质量默认)、hqdefault(高清晰度默认)、sddefault(标准清晰度默认)和maxresdefault(最大分辨率默认)这些不同的缩略图版本。

虽然它没有我和Claude迭代过的版本那么好,但这仍然表明Llama3.3能够在运行在我的Mac上的同时,一次性生成一个完整的交互式应用程序。

How does it score?

对于这类模型,检查独立的基准测试总是很有用。

我目前最喜欢的一个基准测试是LiveBench,它自称为“一个具有挑战性、无污染的大型语言模型(LLM)基准测试”,并且用一系列不同的任务测试了大量的模型。

在他们的表格中,llama-3.3-70b-instruct-turbo目前排在第19位,这个位置领先于2024年3月发布后我最喜欢的几个模型之一的Claude3Opus,并且紧随4月的GPT-4 Turbo和9月的GPT-4o之后。

值得指出的是,这个排名是基于多个评估的平均值进行排序的,而Llama 3.3 70B在“IF”(指令遵循)评估中不知何故目前得分位居榜首,这可能影响了平均值。

Honorable mentions

Llama 3.3是目前我在自己硬件上运行过的模型中给我留下最深刻印象的,但最近我还有许多其他积极的体验。

上个月我写了关于Qwen2.5-Coder-32B的介绍,这是阿里巴巴Qwen研究团队推出的一个Apache 2.0许可的模型,它在代码方面也给了我令人印象深刻的结果。

几周前,我尝试了另一个Qwen模型,QwQ,它实现了与OpenAI的o1系列类似的思维链模式,但同样可以在我的设备上舒适地运行。

Meta的Llama 3.2系列模型也很有趣:微小的1B和3B模型(那些甚至应该能在树莓派上运行),它们的能力远超我的预期——加上Meta首次推出的多模态视觉模型,大小分别为11B和90B。我在九月份写了关于这些的内容。

Is performance about to plateau?

我对围绕大型语言模型(LLM)达到平台期的持续讨论大多持怀疑态度。我个人最兴奋的领域是多模态(将图像、音频和视频作为输入)和模型效率。这两方面在过去一年中都取得了巨大的飞跃。

我并不特别关心“人工通用智能(AGI)”。我希望模型能够快速且经济地完成我要求它们做的有用事情——这正是我在过去十二个月中越来越多地得到的。

即使这些工具的进步现在完全停止,我仅凭已经下载并存储在U盘上的模型,就足以让我忙碌且高效地工作多年。

Bonus: running Llama 3.3 70B with MLX

我在这篇文章中专注于Ollama,因为它是最简单的选项,但我也设法使用苹果出色的MLX库运行了一个Llama3.3的版本,MLX库刚刚庆祝了它的一周年。

以下是我如何使用MLX和uv来启动一个临时虚拟环境来运行模型的方法:

uv run --with mlx-lm --python 3.12 python

这给了我一个Python解释器,其中mlx-lm是可用的。然后我运行了这个命令:

prompt = "Generate an SVG of a pelican riding a bicycle, start with <svg>"messages = [{"role": "user", "content": prompt}]
prompt2 = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
response = generate(
    model, tokenizer, prompt=prompt2, verbose=True
)

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

二、AI大模型视频教程

三、AI大模型各大学习书籍

四、AI大模型各大场景实战案例

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

发布评论

评论列表 (0)

  1. 暂无评论