Skip to main content

AI 开发工具

AI 开发工具

MTT AIBOOK 为您提供开箱即用的 AI 开发工具,包含 Python、Jupyter、VsCode。

 Python

Python 因其简洁易学的语法、丰富的库和框架成为当前 AI 开发的首选语言。MTT AIBOOK 作为面向 AI 开发者的算力本,预装了 3.10.12 版本的 Python,以及一些列主流 Python 框架及库,如 Numpy、Pandas、Matplotlib、PyTorch、OpenCV 等,为 AI 开发者用户提供“开箱即用”的专业开发环境。

 Jupyter

Jupyter 是一款开源的交互式计算环境与文档工具,它的核心载体是 Jupyter Notebook(后缀为.ipynb),以单元格(Cell) 为基本单位,可混合编写代码、富文本、公式、图片和可视化图表,实现「代码 + 文档 + 结果」的一体化呈现。

 VS Code

Visual Studio Code(简称 VS Code)是一款轻量且强大的跨平台代码编辑器,支持 Python、Java、C/C++ 等多种编程语言,具备代码编辑、语法高亮、智能提示、调试、插件扩展等核心功能,能满足日常代码编写、运行、调试的全流程需求。

创建一个jupyter notebook文件

  1. 点击 dock 栏的 应用程序 ,找到 Jupyter Notebook Jupyter Notebook ,左键单击后会进入到 jupyter 的主界面。

  2. 找到菜单栏,点击菜单栏的 “File”,随后点击 “New”,选择 Notebook,即可创建一个新的 Notebook 文件。

  3. 新建好的 Notebook 文件会让你先选择 pythonkernel,本文档选择已预装好的 Python3(ipykernel)。新的 Notebook 文件被创建后,文件名默认为 Untitled,可以随时更改。


使用Notebook进行AI模型推理

  1. 在新建的 Notebook 文件,选中一个单元格(Cell),随后将以下示例代码输入单元格:

    import torch
    import torch_musa
    import torchvision.models as models
    # 1. 加载模型并打印模型状态
    model = models.resnet50().eval()
    print("===== 步骤1:加载ResNet50模型 =====")
    print(f"模型初始设备(默认CPU): {next(model.parameters()).device}") # 查看模型初始设备
    print("-" * 50)
    # 2. 生成随机输入张量并打印信息
    x = torch.rand((1, 3, 224, 224), device="musa")
    print("===== 步骤2:生成随机输入张量 =====")
    print(f"输入张量设备: {x.device}") # 验证是否在MUSA上
    print("-" * 50)
    # 3. 将模型迁移到MUSA并验证
    model = model.to("musa")
    print("===== 步骤3:模型迁移到MUSA设备 =====")
    print(f"模型迁移后设备: {next(model.parameters()).device}") # 验证模型是否成功到MUSA
    print("-" * 50)
    # 4. 执行推理并打印结果信息
    print("===== 步骤4:执行模型推理 =====")
    y = model(x)
    print(f"输出张量设备: {y.device}") # 验证输出是否也在MUSA上
    print(f"输出张量前10个值(分类得分): {y[0][:10]}") # 查看前10个分类的预测得分
    print(f"预测得分最高的类别索引: {torch.argmax(y).item()}") # 看随机输入的“预测类别"
  2. 选中输入了代码的单元格,点击菜单栏的 运行单元格 ,或者按下快捷键 Shift + Enter,即可执行单元格中的代码,等待代码执行后,便会有对应输出打印在单元格下方。


使用 VS Code 进行 MUSA 编程

  1. 通过点击 应用程序 打开应用列表后,在应用列表中找到 VS Code ,左键点击即可打开 VS Code。

  2. 在 VS Code 主界面,找到左上角的菜单栏,点击“File”-> “Open Folder”-> 选择文档文件夹(您可以随意选择你想存放 MUSA 源码的文件夹)。

  3. 在 VS Code 主界面,点击 新建文件 创建一个新文件,随后为该新创建的文件命名为 musa.mu

  4. 下面以一个简单的 musa example,实现了浮点的 vector 相加。具体的代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <musa_runtime.h>
    #define CHECK_MUSA_ERR(err, msg) \
    do { \
    if (err != musaSuccess) { \
    fprintf(stderr, "%s (error code: %s)\n", msg, musaGetErrorString(err)); \
    exit(EXIT_FAILURE); \
    } \
    } while(0)
    // MUSA内核:向量加法 C = A + B
    __global__ void vectorAdd(const float *A, const float *B, float *C, int numElements) {
    int i = blockDim.x * blockIdx.x + threadIdx.x;
    if (i < numElements) C[i] = A[i] + B[i];
    }
    int main(void) {
    const int numElements = 50000;
    const size_t size = numElements * sizeof(float);
    musaError_t err;
    // 1. 分配主机内存并初始化
    float *h_A = (float *)malloc(size);
    float *h_B = (float *)malloc(size);
    float *h_C = (float *)malloc(size);
    if (!h_A || !h_B || !h_C) { // 合并NULL校验
    fprintf(stderr, "Failed to allocate host vectors!\n");
    exit(EXIT_FAILURE);
    }
    for (int i = 0; i < numElements; ++i) {
    h_A[i] = rand()/(float)RAND_MAX;
    h_B[i] = rand()/(float)RAND_MAX;
    }
    // 2. 分配设备内存
    float *d_A = NULL, *d_B = NULL, *d_C = NULL;
    CHECK_MUSA_ERR(musaMalloc((void**)&d_A, size), "Failed to allocate device vector A");
    CHECK_MUSA_ERR(musaMalloc((void**)&d_B, size), "Failed to allocate device vector B");
    CHECK_MUSA_ERR(musaMalloc((void**)&d_C, size), "Failed to allocate device vector C");
    // 3. 主机→设备拷贝数据
    CHECK_MUSA_ERR(musaMemcpy(d_A, h_A, size, musaMemcpyHostToDevice), "Copy A: host→device failed");
    CHECK_MUSA_ERR(musaMemcpy(d_B, h_B, size, musaMemcpyHostToDevice), "Copy B: host→device failed");
    // 4. 启动MUSA内核
    const int threadsPerBlock = 256;
    const int blocksPerGrid = (numElements + threadsPerBlock - 1) / threadsPerBlock;
    printf("Launch kernel: %d blocks × %d threads\n", blocksPerGrid, threadsPerBlock);
    vectorAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, numElements);
    CHECK_MUSA_ERR(musaGetLastError(), "Kernel launch failed");
    // 5. 设备→主机拷贝结果
    CHECK_MUSA_ERR(musaMemcpy(h_C, d_C, size, musaMemcpyDeviceToHost), "Copy C: device→host failed");
    // 6. 验证计算结果
    for (int i = 0; i < numElements; ++i) {
    if (fabs(h_A[i] + h_B[i] - h_C[i]) > 1e-5) {
    fprintf(stderr, "Verification failed at element %d!\n", i);
    exit(EXIT_FAILURE);
    }
    }
    printf("Test PASSED\n");
    // 7. 释放内存(设备 + 主机)
    musaFree(d_A); musaFree(d_B); musaFree(d_C);
    free(h_A); free(h_B); free(h_C);
    printf("Done\n");
    return 0;
    }
  5. 将代码内容拷贝进 musa.mu 后,点击菜单栏中的 “Terminal”,如果找不到 “Terminal”,请先点击菜单栏中的“菜单按钮 ”,在弹出的菜单栏就能找到 “Terminal” Terminal选项 。

  6. 在下方的 Terminal 窗口中,输入命令:mcc musa.mu -o musa -lmusart,对刚刚编写的 musa 源码进行编译。

  7. 随后便可在 Terminal 窗口中,输入命令:./musa ,执行 MUSA 程序,并最终可在终端窗口获取程序执行过程中的打印内容。 image