100天学习mojoday1初识Mojo

2023年 9月 26日 35.8k 0

欢迎关注github项目,100天Mojo从新手到大师

github.com/wusiyaodiud…

Mojo简介

Mojo的历史

当Mojo团队开始开发Modular时,并没有打算构建一种新的编程语言。但是在构建Mojo团队的平台,以统一全球的机器学习/人工智能基础设施时,Mojo团队意识到整个技术栈上的编程过于复杂。此外,Mojo团队不得不手动编写大量的MLIR,但并没有很愉快的体验。

Mojo团队所期望的是一种创新且可扩展的编程模型,能够针对在人工智能领域普遍存在的加速器和其他异构系统进行编程。这意味着需要一种具有强大的编译时元编程、集成自适应编译技术、在整个编译过程中进行缓存等功能的编程语言,而这些功能在现有的编程语言中并不受支持。

而且,尽管加速器很重要,但最常见且有时被忽视的“加速器”之一是主机CPU。如今,CPU拥有大量类似张量核心的加速器块和其他人工智能加速单元,但它们还充当着对特殊加速器无法处理的操作的“备用”角色,比如数据加载、前后处理以及与外部系统的集成。因此,很明显,Mojo团队不能仅依靠仅适用于特定处理器的“加速器语言”来推动人工智能。

应用型人工智能系统需要解决所有这些问题,Mojo团队认为没有理由不能只用一种语言来实现。因此,Mojo诞生了。

Mojo与Python

Mojo的核心任务包括编译器内部的创新以及对当前和新兴加速器的支持,但认为没有必要在语言语法或社区方面进行创新。所以选择拥抱Python生态系统,因为它被广泛使用,受到AI生态系统的喜爱。

Mojo语言有崇高的目标:希望与Python生态系统完全兼容,需要可预测的低级性能和低级控制,需要能够将代码子集部署到加速器。此外,不想创建一个碎片化的软件生态系统——不希望采用Mojo的Python用户像从Python2.x迁移到3.x一样痛苦。

此外,Mojo的长期目标是提供Python的超集(即使Mojo与现有的Python程序兼容),并接受CPython实现以支持长尾生态系统。如果你是一个Python程序员,Mojo是可以被立即熟悉的,同时也提供新的工具来开发安全和高性能的系统级代码,否则这些代码需要低于Python的C和C++。

与Python的兼容性

计划与Python生态系统完全兼容,但实际上有两种类型的兼容性:

  • 就您导入现有Python模块并在Mojo程序中使用它们的能力而言,Mojo是100%兼容的,因为使用CPython进行互操作性。
  • 就将任何Python代码迁移到Mojo而言,它还不完全兼容。Mojo已经支持Python的许多核心功能,包括async/await,错误处理,variadics等。然而,Mojo还很年轻,缺少Python的许多其他功能。Mojo甚至还不支持类!

搭建编程环境

Mojo SDK目前可用于Ubuntu Linux系统,并且即将支持Windows和macOS。

Linux环境

要使用Mojo SDK,需要一个符合以下规范的系统:

  • Ubuntu 20.04/22.04 LTS
  • x86-64 CPU(使用 SSE4.2 或更高版本)和至少 8 GiB 内存
  • Python 3.8 - 3.10
  • g++ or clang++ C++ compiler
# Install the Modular CLI:
curl https://get.modular.com | \
  MODULAR_AUTH=mut_384711e99c8d4ffc937469aaae47b248 \
  sh -
# Install the Mojo SDK:
modular install mojo

安装 Mojo 后,可以使用 Mojo CLI 构建和编译 Mojo 程序。

在开始之前,必须设置 MODULAR_HOMEPATH 环境变量,如运行 modular install mojo 时的输出中所述。可以按如下方式设置它们:

echo 'export MODULAR_HOME="$HOME/.modular"' >> ~/.bashrc

echo 'export PATH="$MODULAR_HOME/pkg/packages.modular.com_mojo/bin:$PATH"' >> ~/.bashrc

source ~/.bashrc

基于网络的Mojo Playground(JupyterLab)

除了下载Mojo SDK,还可以在Mojo团队托管的JupyterLab环境(称为Mojo Playground)中尝试Mojo。这是JupyterLab的托管版本,运行最新的Mojo内核。

Hello, world

与Python类似,使用print('Hello World')实现。

交互式环境(REPL)

在终端通过 mojo 命令启动 REPL 会话。

然后输入print('Hello World') 并按 Enter 两次(需要空行来指示表达式的结尾)。

REPL 主要用于简短的实验,因为代码不会保存。所以当编写一个真正的程序时,需要在 .mojo 源文件中编写代码。

构建并运行 Mojo 源文件

Mojo 源文件使用 .mojo.🔥 文件扩展名标识

创建一个名为 hello.mojo(或 hello.🔥 ) 的文件,并添加以下代码:print('Hello World')

使用mojo命令运行:mojo hello.mojo

注释

与Python一致

  • 单行注释 - 以#和空格开头的部分
  • 多行注释 - 三个引号开头,三个引号结尾
  • 相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论