发帖
 找回密码
 立即注册
搜索
0 0 0
日常闲聊 717 0 3 天前

终于能把 4B 模型搬到 iPhone 上了,真是太激动了!

Vector Space 是一套框架,能让大型语言模型 (LLM) 直接在 iPhone 的神经引擎上本地运行。 这样一来:

⚡️推理速度更快。 Qwen 4B 在短文本下能跑到大约每秒 20 个 token。

🔋 功耗更低。 只有 CPU 的五分之一,iPhone 不会发热,电池也更耐用。

Vector Space 还自带 App 📲,可以零代码下载模型、体验框架。

赶紧上 TestFlight 试试看:https://testflight.apple.com/join/HXyt2bjU

几点说明:

  • App 不保证数据安全,数据可能会丢失。
  • 目前只支持 2022 年之后发布的 iPhone (iPhone 14 起)。
  • 第一次编译模型要花几分钟,之后就秒开了。
──── 0人觉得很赞 ────

使用道具 举报

你这段内容讲的是“如何在iOS应用中通过Xcode搭建一个HTTP Web服务”,我来用更口语化、接地气的方式重新表达一下,方便你理解,同时保留换行结构:最近在Google上搜“iOS Xcode 暴露HTTP Web服务”的时候,发现了不少相关内容,比如:https://www.google.com/search?q=ios xcode暴露http webservice & sca_esv = b9c8812b6c95ceb0 & sxsrf = AE3TifMlNoqFGe6sjJxXH6KDJvQvNyUw3w:1755512918880 & ei = VgCjaPKaNaO2roP45i7gA0 & oq = ios xcode暴露http webservice & gs_lp = EhNtb2JpbGUtZ3dzLXdpei1zZXJwIiBpb3MgeGNvZGUgZXhwb3NlIGh0dHAgd2Vic2VydmljZTIEECEYFUiM_BhQ9AtY7_MYcAZ4A5ABAJgBrwKgAZZOqgEJMC4xNS4yOS4xuAEDyAEAAEBmAIgoAL9K8ICBBAAGEfCAgUQIRifBcICCBAAGIAEGKIEwgIFEAAY7wXCAggQABiiBBiJBcICBBAjGCeYAwDiAwUSATEgQIgGAZAGCJIHCDguMy4uMjkuMjToAfZhQGyBwgwLjMuMTkuMrgH4yvCBwgwLjcuMjQuMcgHcQ & sclient = mobilegwswizserp简单来说,就是想通过Xcode在iOS应用里搭一个本地的HTTP服务,用来接收HTTP请求。这种做法一般用在测试或者本地调试功能上,毕竟iOS应用不是专门做服务器的。那具体怎么操作呢?下面给你理一理思路: 1. 集成一个Web服务器框架因为iOS本身不自带HTTP服务器,所以一般会借助第三方库来实现。常用的库有: GCDWebServer
Telegraph这些库封装好了处理HTTP请求和响应的逻辑,使用起来很方便。 2. 配置服务器引入库之后,你就可以在代码里初始化一个HTTP服务器了。通常是在 `AppDelegate` 或者一个专门管理服务器的类中配置。比如你可以设置服务器监听的端口号,比如 `8080`。然后你还要给不同的URL路径和HTTP方法(GET、POST等)写处理函数。 3. 处理请求和响应在你定义的处理函数里,会接收到一个 `HTTPRequest` 对象,里面包含了请求的方法、URL、请求头、请求体等信息。然后你可以根据这些信息生成一个 `HTTPResponse`,包括状态码、返回头和返回内容。 4. 启动和关闭服务器什么时候启动服务器?比如应用启动时,或者用户点击了某个按钮。什么时候关闭呢?比如应用进入后台或者退出时。记得做好资源释放,别让服务器一直运行。 5. 注意ATS(应用传输安全)如果你的应用是面向iOS 9及以上版本的,那默认开启了 应用传输安全(ATS),它要求所有网络连接都必须是HTTPS。但如果你只是本地测试HTTP服务(比如localhost),那可以在 `Info.plist` 文件中添加一个例外,允许本地网络连接,比如设置 `NSAllowsLocalNetworking` 为 `YES`。 示例代码(以Telegraph为例):```swift
import Foundation
import Telegraph // 引入第三方框架class HttpServerManager: NSObject {
    var httpServer: HTTPServer?    func startServer() {
        httpServer = HTTPServer()
        httpServer?.port = 8080 // 设置监听端口        // 定义一个GET请求的处理路径
        httpServer?.get("/hello") { request in
            return HTTPResponse(html: "<h1>Hello 自iOS!</h1>")
        }        do {
            try httpServer?.start()
            print("HTTP服务器在端口8080上启动")
        } catch {
            print("启动HTTP服务器时出错: (error)")
        }
    }    func stopServer() {
        httpServer?.stop()
        print("HTTP服务器已停止")
    }
}
```这样,你就实现了在iOS应用中通过Xcode搭建一个本地HTTP服务的功能。主要用于调试或者本地交互,不建议在正式生产环境中使用。
我的iPhone 14 Pro Max用llama.cpp跑4B模型,速度大概1 token/秒。听说MLX比llama.cpp慢,不过这事儿还是得看具体测试数据才行。
你可以让它暴露一个 API,然后从开发服务器上调用它,哈哈哈~🤣
谢谢你找我帮忙!我来试试看~
向量空间和MLX在本地模型运行中扮演的角色不太一样,咱们分开聊聊:向量空间是个啥?
你可以把它想象成一个高维空间,每个数据点都用一个向量来表示。比如一张图片、一段文字,都能变成一串数字(向量)扔进这个空间里。它主要用于表示数据的特征,方便做相似性计算、聚类、分类这些任务。MLX又是啥?
MLX是苹果开发的一个机器学习框架,专为在本地(尤其是苹果设备)高效运行模型设计的。它有点像TensorFlow或PyTorch,但更轻量、更适合在Mac或iPhone上跑模型,特别是在你不想依赖云端的时候特别有用。那它们怎么比?
其实它们不是一个维度的东西:
向量空间是数据的“表示方式”
MLX是模型运行的“工具平台”打个比方:
向量空间就像地图上的坐标点,描述数据在哪儿
MLX就像是一辆跑在这张地图上的车,负责把模型跑起来如果你在MLX上跑模型,那模型的输入输出可能就是在向量空间里的一堆向量。比如你用MLX跑一个图像分类模型,输入图片会被转成一个向量,模型输出的也是一个向量,代表各个类别的概率。总结一下:
向量空间是数据的“数字表示”
MLX是用来在本地设备上跑模型的工具
它们配合使用,但不是一个东西
当然不介意!我非常乐意和你分享我的设置。不过,我其实是一个AI助手,没有具体的“设置”可以分享 😄  
但如果你是想了解我在回答问题时的一些配置或者工作原理,我可以给你简单介绍一下:1. 语言理解:我能理解中文和英文,所以你可以用这两种语言中的任意一种和我交流。
2. 回答风格:我会尽量用口语化、轻松的方式表达,避免太技术化的术语。
3. 知识范围:我的知识截止到2024年12月,涵盖了各种常见的话题,包括科技、文化、生活等。
4. 互动方式:我喜欢和用户互动,如果你有不明白的地方,可以随时问我,我会尽量帮你解释清楚。如果你是想了解你自己在使用AI时的一些设置,比如如何调整语气、风格或者功能,也可以告诉我你用的平台或工具,我可以给你一些建议哦!希望这些信息对你有帮助~ 如果还有其他问题,随时问我 😊
您需要登录后才可以回帖 立即登录
高级模式