Mojo 出现的背景

Mojo 出现的背景当下,AI 模型的开发基本都是使用 Python 完成。但 Python 性能相对较慢,对于这类大规模的计算密集型任务,并不是最佳选择。在使用多线程时,Python 解释器中的全局解释器锁不能充分发挥多核处理器的优势,一定程度增加了 AI 模型开发的复杂性。而且,Python 的内存占用通常较高,在规模的数据集和复杂的模型中,会因频繁的内存交换而变得效率低下,尤其会限制可处理的数据规模。这无疑是减缓 AI 模型创新发展的步伐。伴随着机器学习需求与日俱增,Mojo 应运而生。

Mojo 语言发展的历程

当下,AI 模型的开发基本都是使用 Python 完成,但 Python 性能相对较慢,对于大规模的计算密集型任务,并不是最佳选择。在使用多线程时,Python 解释器中的全局解释器锁不能充分发挥多核处理器的优势,一定程度增加了 AI 模型开发的复杂性。而且,Python 的内存占用通常较高,在规模的数据集和复杂的模型中,会因频繁的内存交换而变得效率低下,同时会限制处理数据的规模,从而影响 AI 模型的创新。伴随着机器学习需求与日俱增,Mojo 应运而生。

面向 AI 的编程语言 Mojo

Mojo 是一种创新且可扩展的编程模型,用于解决开发者在构建机器学习基础设施时,面临的整个堆栈编程过于复杂的问题。Mojo 又被称为 Python 的超集,它比 Python更适用于系统编程,同时,Mojo支持任何 Python 模块导入 Mojo程序中,让开发者可以充分使用高性能代码,不会增加开发门槛。另外,在 AI 模型开发过程中,Mojo 可以通过“fn”创建函数,以构建更复杂的函数管道或函数链,从而实现更高级的功能,为 AI 模型创新提供更稳定、快速、高质量的开发环境。

Mojo 的优点

可用性和可编程性

Mojo 可简化人工智能应用程序的开发过程,开发人员可以专注于创建尖端的人工智能解决方案,无需使用 C++ 和 CUDA 等高度复杂性的语言;同时 Mojo 还能让开发者深入了解编码的细节部分。借助 MLIR,Mojo 开发者既能轻松编程,又能深度优化强大功能。

性能强大

开发者使用 Mojo 进行编程,无需再单独掌握 C++ 或 CUDA 等其他语言,通过 Mojo 一种语言即可完成 AI 模型所有内容的编写。Mojo 的高级语法完全基于 Python,并且 Mojo 能够实现自动并行化,很大程度降低了开发者的使用门槛。

互操作性和可扩展性

Mojo 支持访问完整的 Python 科学计算库,如 Numpy、SciPy、Pandas、Matplotlib 以及用户自定义代码,提供了丰富的机器学习算法、工具以及深度学习框架等,使得在 Mojo 上开发和训练复杂的机器学习模型更加容易和高效。

Mojo 的技术优势

Mojo是一个功能强大的现代Web开发框架,主要满足了开发人员在高性能系统编程和人工智能(AI)领域不断变化的需求,其背后的技术原理主要包含以下几方面:

简化人工智能开发:

Mojo 可简化人工智能应用程序的开发过程,开发人员可以专注于创建尖端的人工智能解决方案,无需使用 C++ 和 CUDA 等高度复杂性的语言;同时 Mojo 还能让开发者深入了解编码的细节部分。借助 MLIR,Mojo 开发者既能轻松编程,又能深度优化强大功能。

AI/ML 基础设施的统一:

Mojo 的创建更强调了 Modular 对细节的关注和把控,Mojo不仅试图努力简化复杂的人工智能 (AI) 编程技术,还试图统一人工智能和机器学习 (ML) 基础设施。

性能和可扩展性:

Mojo 设计之初,是为了在日益复杂的开发环境下,保持高性能开发,并提升可扩展性。Mojo 减少了在不必要任务上的资源和时间浪费,无需再释放空间,即可进行数据的跟踪,提高程序运行的流畅性。

Mojo 的适用场景

Mojo 作为一种高级、动态的 Perl Web 应用程序框架,既可以用来定位速度,又具有简单便捷和高扩展性,主要应用于以下场景:

1、轻量级的 Web 应用
Mojo 是一种轻量级的框架,更适合构建小型的 Web 应用。因为 Mojo 的代码量少,结构也更简单,对于一些简单的项目,使用 Mojo 可以快速搭建起基本应用框架,并能快速添加不同功能和路由。

2、RESTful API 开发
通过 Mojo 路由系统,可以轻松定义各种 API 端点和请求方法,并能更方便地处理请求、返回响应。同时 Mojo 提供的 SON 解析和验证等一些常用插件,可以提高 API 开发的便捷性。

3、实时应用程序
Mojo 具有处理实时数据和事件的能力,在构建实时应用程序的过程中,借助 Mojo 的事件系统,开发人员可以实现消息推送、实时通信等功能,而且使用 Mojo 进行实时应用程序开发,也能简化开发的环节,缩短应用程序的开发周期。

4、单页应用
单页应用程序(SPA)通常是基于 JavaScript 的前端应用,而 Mojo 还能为后端的 RESTful API 提供数据支持,基于 Mojo 路由系统,开发者可以方便地定义 API 端点,并通过 JSON 格式返回数据给前端应用。

5、网络爬虫
通过 Mojo 的 HTTP 客户端,开发者可以快速发送 HTTP 请求,且 Mojo 支持异步请求和回调,同时 Mojo 还能提供一系列解析插件,便于开发人员快速抓取所需的数据。

6、Web 服务开发
依托 Mojo 的插件机制,可以更方便地扩展上传、图像处理服务等不同类型的 Web 服务,Mojo 还能为用户提供一些常用的工具类库,提升开发的效率。

Windows 如何直接运行 Mojo

原来在 Windows 中安装 Mojo 编程语言,需要通过 WSL2 安装 Ubuntu 系统间接安装,下面我们介绍一下如何直接将 Mojo 添加至 Windows 环境中(默认已安装 WSL2-Ubuntu 系统和 Modular-CLI 以及 Mojo):

步骤 1:准备
使用 wsl + Linux 命令来在 Windows 端运行 Linux 命令,但是需要注意,使用 wsl +Linux 命令时,不论在 /etc/environment、/etc/profile 等文件中添加环境变量还是其他方法,都不能运行自己使用 export 命令添加到 Linux 系统 PATH 环境变量中的命令,但在 /bin、/usr/bin 等系统 bin 目录下的指令都可执行。

步骤 2:配置环境
一般,使用 modular 安装 Mojo 是直接安装在~/.modular 文件夹中的,同时安装脚本会直接配置环境;但如果使用 zsh 则需要手动配置环境, 配置完成后,需通过命令检查是否成功。

步骤 3:运行命令
打开 cmd.exe 命令行窗口,即可运行命令查看效果。若您想直接输入 mojo 就运行命令,则可以使用 bat,将指令放在 bat 中,并将 bat 添加至 Windows 环境变量 PATH 中。

Mojo 性能为什么远超其他语言模型?

原来在 Windows 中安装 Mojo 编程语言,需要通过 WSL2 安装 Ubuntu 系统间接安装,下面我们介绍一下如何直接将 Mojo 添加至 Windows 环境中(默认已安装 WSL2-Ubuntu 系统和 Modular-CLI 以及 Mojo)

Mojo 之所以能在性能上有较为明显的优势,主要可以归结为以下四点原因:

【1】通过类型注释,消除了 Python 动态类型的损失,并通过代数简化的方式,避免了开方运算,优化了复数平方运算,从而实现了 89 倍的加速。

【2】通过向量化实现了单指令多数据的并行运算,且向量宽度匹配 CPU 的 FMA 数量达到了 874 倍。

【3】Mojo 改成了多核并行化,对于 88 核的系统再获得 30 倍的加速,相比于原始 Python 则提升了 2.6 万倍。

【4】Mojo 解决了并行化运行中加载不均衡的问题,是线程池中动态获取任务的 6.8 万倍。

Mojo 主要支持哪些类型的 Web 编程

Mojo 是 Perl Web 开发框架,可以支持 HTTP、表单处理等常见的 Web 编程类型:

HTTP 基础类型:Mojo 中提供了从 HTTP 规范中衍生出来的 Request、Response、Headers、Cookies 等大量 HTTP 基础类型。

模板引擎:Mojo 可支持 Template Toolkit 等多种流行的模板引擎。

WebSocket 和长轮询:Mojo 内置的 WebSocket 和长轮询可轻松构建实时聊天、在线游戏等 Web 应用程序。

流量数据库和 ORM:Mojo 提供了多种数据库和 ORM 接口,如 MySQL、PostgreSQL、SQLite 等。

表单处理:使用 Mojo 中的表单处理工具,可以轻松验证、解析和处理 HTML 表单数据。

Mojo 与其他前端框架比较

Mojo 与 React 和 Angular 都是前端框架,但是三者相比各有优势,且适用于不同的场景,从性能、学习曲线等方面看,三者存在一些差异,主要体现在:

在性能方面:Mojo 使用的是 DOM 提高性能,且渲染引擎用的是 C++ 编写,因此在性能上 Mojo 具有更强的优势。

在学习曲线上:Mojo 相比于 React 和 Angular 学习曲线更低,对于初学者来说,更容易上手,无需像 React 和 Angular 要学习大量的语法和功能。

生态系统方面:React 和 Angular 已经是相对成熟的生态系统,具有丰富的插件,而 Mojo 在此方面略有欠缺。

使用场景:Mojo 可适用于构建高性能单页应用功能程序、可以更好地与已有的 Web 应用程序集成,而 React 和 Angular 则更适用于构建复杂页面应用程序和大型企业级应用程序。

Mojo 有哪些不足

Mojo 的设计目标是为了通过简单的语法为用户提供高性能的开发体验,但相对于 Python 还是有一定的不足,主要体现在:

生态环境相对不成熟:Mojo 作为一种新的编程语言,相比于 Python 等成熟的编程语言,其 API 和工具仍在快速发展中,系统成熟度有待提升。使用中可能缺乏相关库的工具支持。

社区支持较少:由于 Mojo 相对较新的状态,它的社区规模远远小于 Python 等,因此使用中不容易获得开发者的支持与帮助,同时开发者需要花费一定时间学习和熟悉它的特性。

Python 和 Mojo 的区别有哪些?

语言类型和性能上:Python 是一种动态类型的解释语言,而 Mojo 是静态类型的编译语言。由于 Mojo 是提前编译的,使用 LLVM 工具链来加工本地代码,因此它的性能通常比 Python 更高。

存所有权和借用检查器:Mojo 支持自有 Argument Convention,可以用于对值拥有自有权的函数,让内存使用更安全。  

自动调整:Mojo 具有内置的自动调整功能,可自动为参数找到最佳值,以充分利用目标硬件。

利用 MLIR:Mojo 通过利用 Multi-Level Intermediate Representation(MLIR)的全部功能,可以发挥向量、线程和 AI 硬件单元的全部优势,从而在性能上超越 Python。  

与 Python 的兼容性:Mojo 被设计为 Python 的超集,因此 Python 程序员可以很容易地使用 Mojo,但 Mojo 目前还不支持类等 Python 功能。

Mojo 如何处理并发操作?

在 Mojo 语言中,应用程序被组成不同的 “路由”,每个路由又由一个 URL 和一个回调函数组成,当请求匹配到某个路由时,回调函数则会被调用,且可以访问请求的参数等内容。Mojo 内置的高并发管理机制,对异步和并发编程有强大的支持能力,一旦出现高并发的情况,mojo 允许开发人员快速创建并响应有效的应用程序,开发人员借助多核 CPU,提高开发工作负载。

Mojo 的表单处理功能有哪些?

Mojo 提供了表单处理等 Web 表单相关的工具,开发者可以轻松验证、解析和处理 HTML 表单数据。具体来说,Mojo 的表单处理功能包括:

表单验证:Mojo 提供了内置的表单验证功能,可以对表单中的输入进行验证,确保输入的数据符合要求。例如,可以验证输入的邮箱格式是否正确,或者输入的密码是否符合要求。

表单解析:Mojo 可以将 HTML 表单数据解析为内部数据结构,以方便后续的处理和操作。

表单处理:Mojo 提供了处理表单数据的工具,可以根据用户输入的数据进行相应的处理,例如将输入的数据保存到数据库中,或者根据输入的数据生成相应的响应。

亚马逊云科技应用程序开发服务的特点

Amazon Amplify 可以满足在亚马逊云科技上构建全栈式网络和移动应用程序的一切需求,无论是构建和托管前端还是验证身份和存储,它都可以实现。

开发者使用 Amazon Amplify 部署前端时,只需要点击几下,即可轻松部署,并安全快速将应用程序托管至安全可靠的网站和服务端。

使用 Amazon Amplify 支持访问 200 多项亚马逊云科技相关服务,按需扩缩,用户只需按照实际使用量付费即可。

欢迎加入亚马逊云科技培训中心

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程
从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程
  • 快速上手训练营
  • 第一课:亚马逊云科技简介

    本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。

    亚马逊云科技技术讲师:李锦鸿

    第二课:存储与数据库服务

    您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。

    亚马逊云科技资深技术讲师:周一川

    第三课:安全、身份和访问管理

    在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。

    亚马逊云科技技术讲师:马仲凯
  • 账单设置与查看
  • 视频:快速完成税务设置

    部署时间:5 分钟

    视频:账户账单信息

    部署时间:3 分钟

    视频:如何支付账单

    部署时间:3 分钟

  • 动手实操
  • 快速上手云上无服务器化的 MySQL 数据库

    本教程将引导您创建一个Aurora Serverless 数据库并且连接上它。

    部署时间:10 分钟

    启动一台基于 Graviton2 的 EC2 实例


    本教程将为您讲解如何在云控制台上启动一台基于 Graviton2 的 EC2 实例。

    部署时间:5 分钟

    使用 Amazon Systems Manager 进行云资源统一跟踪和管理

    在这个快速上手教程中,您将学会如何使用 Amazon Systems Manager 在 Amazon EC2 实例上远程运行命令。

    部署时间:10 分钟

准备好体验亚马逊云科技提供的云服务了吗?

新用户享受中国区域 12 个月免费套餐

快速注册账号 享用免费套餐

跟随注册步骤详解,三分钟快速创建账号,领取免费权益

打开中国区账号注册页面

01 填写您 注册账号的邮箱,点击“继续”

02 查看您的 注册账号邮箱

注: 发件箱 no-reply@register.signin.amazonaws.com.cn

03 输入 邮箱中收到的验证码,点击“继续”

注: 该链接中的内容显示语言是与您的网页浏览器设置相一致的,您可以根据需要自行调整语言栏。

立即开始注册 »

image

填写用户名密码

01 请设置您的 账号用户名

02 为您的帐号 设置密码

03 重新 输入密码

立即开始注册 »

图片

填写账号联系人以及公司信息

01 填写公司联系人 姓名全称

02 填写公司联系人的 联系电话

03 填写 公司名称

注: 公司名称请务必与您所提供的营业执照公司名称保持一致

04 填写 公司办公地址

注: 省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码

05 请选择 是否需要发票

注: *附件-申请发票流程 供您参考

06 点击查看 客户协议 勾选方框表示您已阅读,并同意客户协议的条款

立即开始注册 »

图片

企业信息验证

01 在此上传 企业注册执照

02 请填写网络安全负责人的 姓名

注: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致

03 请填写网络安全负责人的 联系方式

注: 有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)

04 在此上传网络安全负责人的 身份证件

注: 当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿

立即开始注册 »

图片

手机验证与支持计划

01 在此填写 手机号

02 请输入您收到的 4 位 验证码

03 请点击 继续

04 请根据需求 选择一个支持计划

立即开始注册 »

图片
Summit

亚马逊云科技中国峰会即将开幕!

6 月 19 日 - 20 日|上海世博中心

与 12,000+ 云计算从业者齐聚一堂,探索全球行业应用实践,共话未来!