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文件
-
点击 dock 栏的
,找到 Jupyter Notebook
,左键单击后会进入到 jupyter 的主界面。 -
找到菜单栏,点击菜单栏的 “File”,随后点击 “New”,选择 Notebook,即可创建一个新的 Notebook 文件。
-
新建好的 Notebook 文件会让你先选择
python的kernel,本文档选择已预装好的 Python3(ipykernel)。新的 Notebook 文件被创建后,文件名默认为Untitled,可以随时更改。
使用Notebook进行AI模型推理
-
在新建的 Notebook 文件,选中一个单元格(Cell),随后将以下示例代码输入单元格:
import torchimport torch_musaimport 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}") # 验证模型是否成功到MUSAprint("-" * 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()}") # 看随机输入的“预测类别" -
选中输入了代码的单元格,点击菜单栏的
,或者按下快捷键 Shift + Enter,即可执行单元格中的代码,等待代码执行后,便会有对应输出打印在单元格下方。
使用 VS Code 进行 MUSA 编程
-
通过点击
打开应用列表后,在应用列表中找到
,左键点击即可打开 VS Code。 -
在 VS Code 主界面,找到左上角的菜单栏,点击“File”-> “Open Folder”-> 选择文档文件夹(您可以随意选择你想存放 MUSA 源码的文件夹)。
-
在 VS Code 主界面,点击
创建一个新文件,随后为该新创建的文件命名为 musa.mu。 -
下面以一个简单的 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;} -
将代码内容拷贝进 musa.mu 后,点击菜单栏中的 “Terminal”,如果找不到 “Terminal”,请先点击菜单栏中的“
”,在弹出的菜单栏就能找到 “Terminal”
。 -
在下方的 Terminal 窗口中,输入命令:
mcc musa.mu -o musa -lmusart,对刚刚编写的musa源码进行编译。 -
随后便可在 Terminal 窗口中,输入命令:
./musa,执行 MUSA 程序,并最终可在终端窗口获取程序执行过程中的打印内容。

