-
华为开发者空间是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。华为开发者空间,激励管理 > 非计划权益提供MaaS商用DeepSeek-R1-64K/DeepSeek-V3-64K大模型Tokens福利,欢迎体验案例,留下您的宝贵意见或建议。
-
驱动的cuda为11.4,现在的pytorch基本很少支持,然后预装的镜像基本与驱动的cuda版本不一致。导致跑代码的时候总是提示cuda太旧。华为云也没有支持cuda114版本的torch,torchvision,torchaudio等等如何解决?
-
中青报·中青网记者 武欣中 通讯员 张苗 刘晓琳来源:中国青年报(2025-12-10 07版)转载自中国青年报 :https://zqb.cyol.com/pc/content/202512/10/content_419799.html “推理大模型的训练调优与性能加速,助力全栈自主AI”——2025年度中国青年科技创新“揭榜挂帅”擂台赛上,华为抛出一道紧扣技术前沿的赛题。面对这一极具挑战性的课题,高校学子踊跃参赛,经过层层严格筛选,华为最终收到了36份充满创新思维的解决方案。正如华为创始人任正非先生在2025年民营企业座谈会上强调的:“人工智能是未来发展的重要方向,企业应积极布局,加强基础研究与人才培养,以增强中国在全球人工智能领域的竞争力。”参与“揭榜挂帅”擂台赛,是华为践行这一战略的生动写照。大赛也为华为搭建了一个绝佳平台,使其能将产业前沿的迫切需求,转化为青年人才的实战课题。据介绍,华为已连续3年在“揭榜挂帅”擂台赛上发布战略级赛题,华为云开发者支持与运营部部长林华鼎表示,赛场是根技术从“能用”到“好用”的试炼场,此次赛题聚焦推理大模型调优,正是看准了其在推动AI技术普惠化进程中的核心作用。2025年,大语言模型的推理能力和运行效率成为影响AI技术广泛应用的关键要素。华为此次设计的赛题直击产业痛点:如何在确保模型精度不受影响的前提下,大幅提升模型推理性能。这一赛题设计也体现了华为对构建自主AI生态的长远考量:参赛团队需使用华为昇腾AI处理器架构、CANN软件栈与ModelArts开发环境,这不仅考验学生的算法能力,更考验他们对昇腾AI全栈技术的掌握与运用能力。本届“揭榜挂帅”擂台赛,上海交通大学团队提出的“基于昇腾NPU的训推一体加速优化方案”脱颖而出,荣获本次华为赛道擂主。该方案从训练端减负、推理端提效、算子端深挖三个层面同时发力,在NPU上发挥出模型的极致性能。林华鼎对参赛作品给予高度评价:“每秒707tokens的惊人速度,不仅是算法的胜利,更是驱动我们产品性能持续飞跃、引领行业技术推广的强劲新标杆。我们期待将这一突破性成果快速转化为用户体验与技术领先优势。”林华鼎透露,华为还将持续在产品的开发者体验提升上投入,在高校人才培养方面持续耕耘,支持更多青年在自主创新的舞台上绽放光彩。
-
RK3588部署CNN-LSTM驾驶行为识别模型CNN(卷积神经网络)擅长提取图像的空间特征,LSTM(长短期记忆网络)则擅长处理序列数据的时间特征。首先使用CNN提取视频每一帧特征,之后将提取出的所有特征送入LSTM捕捉视频中的时空特征并对视频特征序列进行分类,实现正常驾驶、闭眼、打哈欠、打电话、左顾右盼5种驾驶行为的识别。一. 模型训练我们在ModelArts创建Notebook完成模型的训练,使用规格是GPU: 1*Pnt1(16GB)|CPU: 8核 64GB,镜像为tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04,首先下载数据集:import os import moxing as mox if not os.path.exists('fatigue_driving'): mox.file.copy_parallel('obs://modelbox-course/fatigue_driving', 'fatigue_driving') if not os.path.exists('rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'): mox.file.copy_parallel('obs://modelbox-course/rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl', 'rknn_toolkit2-2.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl') 该数据集包含1525段视频,总共有5个类别:0:正常驾驶、1:闭眼、2:打哈欠、3:打电话、4:左顾右盼我们从原视频中裁剪出主驾驶位画面,并将画面缩放到特征提取网络的输入大小:def crop_driving_square(frame): h, w = frame.shape[:2] start_x = w // 2 end_x = w start_y = 0 end_y = h return frame[start_y:end_y, start_x:end_x] 使用在imagenet上预训练的MobileNetV2网络作为卷积基创建并保存图像特征提取器:def get_feature_extractor(): feature_extractor = keras.applications.mobilenet_v2.MobileNetV2( weights = 'imagenet', include_top = False, pooling = 'avg', input_shape = (IMG_SIZE, IMG_SIZE, 3) ) preprocess_input = keras.applications.mobilenet_v2.preprocess_input inputs = keras.Input((IMG_SIZE, IMG_SIZE, 3)) preprocessed = preprocess_input(inputs) outputs = feature_extractor(preprocessed) model = keras.Model(inputs, outputs, name = 'feature_extractor') return model feature_extractor = get_feature_extractor() feature_extractor.save('feature_extractor') feature_extractor.summary() Model: "feature_extractor" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= input_2 (InputLayer) [(None, 256, 256, 3)] 0 _________________________________________________________________ tf_op_layer_truediv (TensorF [(None, 256, 256, 3)] 0 _________________________________________________________________ tf_op_layer_sub (TensorFlowO [(None, 256, 256, 3)] 0 _________________________________________________________________ mobilenetv2_1.00_224 (Model) (None, 1280) 2257984 ================================================================= Total params: 2,257,984 Trainable params: 2,223,872 Non-trainable params: 34,112 设置网络的输入大小为256x256,每隔6帧截取一帧提取视频的图像特征,特征向量的大小为1280,最终得到每个视频的特征序列,序列的最大长度为40,不足用0补齐:def load_video(file_name): cap = cv2.VideoCapture(file_name) frame_interval = 6 frames = [] count = 0 while True: ret, frame = cap.read() if not ret: break if count % frame_interval == 0: frame = crop_driving_square(frame) frame = cv2.resize(frame, (IMG_SIZE, IMG_SIZE)) frame = frame[:, :, [2, 1, 0]] frames.append(frame) count += 1 return np.array(frames) def load_data(videos, labels): video_features = [] for video in tqdm(videos): frames = load_video(video) counts = len(frames) # 如果帧数小于MAX_SEQUENCE_LENGTH if counts < MAX_SEQUENCE_LENGTH: # 补白 diff = MAX_SEQUENCE_LENGTH - counts # 创建全0的numpy数组 padding = np.zeros((diff, IMG_SIZE, IMG_SIZE, 3)) # 数组拼接 frames = np.concatenate((frames, padding)) # 获取前MAX_SEQUENCE_LENGTH帧画面 frames = frames[:MAX_SEQUENCE_LENGTH, :] # 批量提取图像特征 video_feature = feature_extractor.predict(frames) video_features.append(video_feature) return np.array(video_features), np.array(labels) video_features, classes = load_data(videos, labels) video_features.shape, classes.shape((1525, 40, 1280), (1525,)) 总共提取了1525个视频的特征序列,按照8:2的比例划分训练集和测试集(batchsize的大小设为16):batch_size = 16 dataset = tf.data.Dataset.from_tensor_slices((video_features, classes)) dataset = dataset.shuffle(len(videos)) test_count = int(len(videos) * 0.2) train_count = len(videos) - test_count dataset_train = dataset.skip(test_count).cache().repeat() dataset_test = dataset.take(test_count).cache().repeat() train_dataset = dataset_train.shuffle(train_count).batch(batch_size) test_dataset = dataset_test.shuffle(test_count).batch(batch_size) train_dataset, train_count, test_dataset, test_count(<BatchDataset shapes: ((None, 40, 1280), (None,)), types: (tf.float32, tf.int64)>, 1220, <BatchDataset shapes: ((None, 40, 1280), (None,)), types: (tf.float32, tf.int64)>, 305) 之后创建LSTM提取视频特征序列的时间信息送入Dense分类器,模型的定义如下:def video_cls_model(class_vocab): # 类别数量 classes_num = len(class_vocab) # 定义模型 model = keras.Sequential([ layers.Input(shape=(MAX_SEQUENCE_LENGTH, NUM_FEATURES)), layers.LSTM(64, return_sequences=True), layers.Flatten(), layers.Dense(classes_num, activation='softmax') ]) # 编译模型 model.compile(optimizer = keras.optimizers.Adam(1e-5), loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics = ['accuracy'] ) return model # 模型实例化 model = video_cls_model(np.unique(labels)) # 保存检查点 checkpoint = keras.callbacks.ModelCheckpoint(filepath='best.h5', monitor='val_loss', save_weights_only=True, save_best_only=True, verbose=1, mode='min') # 模型结构 model.summary() 网络的输入大小为(N, 40, 1280),使用softmax进行激活,输出5个类别的概率:Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm (LSTM) (None, 40, 64) 344320 _________________________________________________________________ flatten (Flatten) (None, 2560) 0 _________________________________________________________________ dense (Dense) (None, 5) 12805 ================================================================= Total params: 357,125 Trainable params: 357,125 Non-trainable params: 0 _________________________________________________________________实验表明模型训练300个Epoch基本收敛:history = model.fit(train_dataset, epochs = 300, steps_per_epoch = train_count // batch_size, validation_steps = test_count // batch_size, validation_data = test_dataset, callbacks=[checkpoint]) plt.plot(history.epoch, history.history['loss'], 'r', label='loss') plt.plot(history.epoch, history.history['val_loss'], 'g--', label='val_loss') plt.title('LSTM') plt.xlabel('Epoch') plt.ylabel('Loss') plt.legend() plt.plot(history.epoch, history.history['accuracy'], 'r', label='acc') plt.plot(history.epoch, history.history['val_accuracy'], 'g--', label='val_acc') plt.title('LSTM') plt.xlabel('Epoch') plt.ylabel('Accuracy') plt.legend() 加载模型最优权重,模型在测试集上的分类准确率为95.8%,保存为saved_model格式:model.load_weights('best.h5') model.evaluate(dataset.batch(batch_size)) model.save('saved_model') 96/96 [==============================] - 0s 5ms/step - loss: 0.2169 - accuracy: 0.9580 [0.21687692414949802, 0.9580328] 二、模型转换首先将图像特征提取器feature_extractor转为tflite格式,并开启模型量化:import tensorflow as tf converter = tf.lite.TFLiteConverter.from_saved_model('feature_extractor') converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, tf.lite.OpsSet.SELECT_TF_OPS] converter.post_training_quantize = True # 模型量化 tflite_model = converter.convert() with open('mbv2.tflite', 'wb') as f: f.write(tflite_model) 再将视频序列分类模型转为onnx格式,由于lstm参数量较少,不需要进行量化:python -m tf2onnx.convert --saved-model saved_model --output lstm.onnx --opset 12 最后导出RKNN格式的模型,可根据需要设置target_platform为rk3568/rk3588:from rknn.api import RKNN rknn = RKNN(verbose=False) rknn.config(target_platform="rk3588") rknn.load_tflite(model="mbv2.tflite") rknn.build(do_quantization=False) rknn.export_rknn('mbv2.rknn') rknn.release() rknn = RKNN(verbose=False) rknn.config(target_platform="rk3588") rknn.load_onnx( model="lstm.onnx", inputs=['input_3'], # 输入节点名称 input_size_list=[[1, 40, 1280]] # 固定输入尺寸 ) rknn.build(do_quantization=False) rknn.export_rknn('lstm.rknn') rknn.release() 三、模型部署我们在RK3588上部署MobileNetV2和LSTM模型,以下是板侧的推理代码:import os import cv2 import glob import shutil import imageio import numpy as np from IPython.display import Image from rknnlite.api import RKNNLite MAX_SEQUENCE_LENGTH = 40 IMG_SIZE = 256 NUM_FEATURES = 1280 def crop_driving_square(img): h, w = img.shape[:2] start_x = w // 2 end_x = w start_y = 0 end_y = h result = img[start_y:end_y, start_x:end_x] return result def load_video(file_name): cap = cv2.VideoCapture(file_name) # 每隔多少帧抽取一次 frame_interval = 6 frames = [] count = 0 while True: ret, frame = cap.read() if not ret: break # 每隔frame_interval帧保存一次 if count % frame_interval == 0: # 中心裁剪 frame = crop_driving_square(frame) # 缩放 frame = cv2.resize(frame, (IMG_SIZE, IMG_SIZE)) # BGR -> RGB [0,1,2] -> [2,1,0] frame = frame[:, :, [2, 1, 0]] frames.append(frame) count += 1 cap.release() return np.array(frames).astype(np.uint8) # 获取视频特征序列 def getVideoFeat(frames): frames_count = len(frames) # 如果帧数小于MAX_SEQUENCE_LENGTH if frames_count < MAX_SEQUENCE_LENGTH: # 补白 diff = MAX_SEQUENCE_LENGTH - frames_count # 创建全0的numpy数组 padding = np.zeros((diff, IMG_SIZE, IMG_SIZE, 3)) # 数组拼接 frames = np.concatenate((frames, padding)) # 取前MAX_SEQ_LENGTH帧 frames = frames[:MAX_SEQUENCE_LENGTH,:] frames = frames.astype(np.float32) # 提取视频每一帧特征 feats = [] for frame in frames: frame = np.expand_dims(frame, axis=0) result = rknn_lite_mbv2.inference(inputs=[frame]) feats.append(result[0]) return feats rknn_lite_mbv2 = RKNNLite() rknn_lite_lstm = RKNNLite() rknn_lite_mbv2.load_rknn('model/mbv2.rknn') rknn_lite_lstm.load_rknn('model/lstm.rknn') rknn_lite_mbv2.init_runtime(core_mask=RKNNLite.NPU_CORE_0_1_2) rknn_lite_lstm.init_runtime(core_mask=RKNNLite.NPU_CORE_0_1_2) files = glob.glob("video/*.mp4") for video_path in files: label_to_name = {0:'正常驾驶', 1:'闭眼', 2:'打哈欠', 3:'打电话', 4:'左顾右盼'} frames = load_video(video_path) frames = frames[:MAX_SEQUENCE_LENGTH] imageio.mimsave('test.gif', frames, durations=10, loop=0) display(Image(open('test.gif', 'rb').read())) feats = getVideoFeat(frames) feats = np.concatenate(feats, axis=0) feats = np.expand_dims(feats, axis=0) preds = rknn_lite_lstm.inference(inputs=[feats])[0][0] for i in np.argsort(preds)[::-1][:5]: print('{}: {}%'.format(label_to_name[i], round(preds[i]*100, 2))) rknn_lite_mbv2.release() rknn_lite_lstm.release() 最终的视频识别效果如下:🚀四、本文小结本文详细阐述了基于RK3588平台的CNN-LSTM驾驶行为识别模型全流程,利用MobileNetV2提取图像的空间特征、LSTM处理视频的时序特征完成对正常驾驶、闭眼、打哈欠、打电话和左顾右盼5类驾驶行为的精准识别,在ModelArts上训练达到95.8%分类准确率,并分别将mbv2.tflite和lstm.onnx转换为RKNN格式实现板侧的高效推理部署。
-
我的训练数据大约是16TB的图像数据和光流真值(.pfm文件)。我目前想要尝试使用该数据训练模型,但是在创建训练作业的时候,并没有选项支持从OBS桶中读取这些数据。我查阅了相关使用指南,在 cid:link_0 中提到,在训练代码中通过OBS SDK实现操作OBS中的数据,并且说明了有400GB的磁盘空间可以直接挂载。但是这一空间还是太少了,不满足我当前的需求。而直接访问obs桶的话,数据读取速度又太慢了,npu长时间处于等待状态。有没有方法可以进一步提高obs中的数据访问速度?或者,能否提供更大的 ssd 存储空间,以支持大规模数据训练?
-
【话题交流】2025年已悄然步入尾声~这一年,大家有哪些悄然生长的收获?华为云的ModelArts Studio(MaaS)让我们更好的调用deepseek等大模型;对象存储,让海量数据存得下、管得好、用得快。
-
[训练管理] 模型训练时出现无法运行权限问题stdbuf: failed to run command ‘/home/ma-user/modelarts/user-job-dir/code/train.py’: Permission denied桶的情况如上所示,在OBS Browser中也改过train.py的「对象 ACL」的权限,但是没有作用
-
如题。近日购买了华为deepseekapi调用包,准备接入现有的服务,但是发现有极其严重的内容审核,连总结论文摘要都提示有敏感信息。请问能否关闭?这严重影响了服务内容。
-
1. 目前的操作指南我只能用券购买Notebook或者workflow,是否可以用来购买云空间ECS呢~2.是否可以用券购买算力集群~在申请的时候,目前看无法配置实例
-
打扰请问,为了在modelarts的notebook中引出ComfyUI的服务端口,使用了ngrok如在notebook中把comfyUI服务的8818端口引出来,使用了ngrok ,设置了connect.ngrok-agent.com不走代理no proxy=127.0.0.1, localhost,172.16.*,obs.cn-soutimest-2.myuaweicloud.com, iam.cn-southwest-2.huaweicloud.com,pip.modelarts,private.com,connect.ngrok-agent.com但是./ngrok http 8818之后,还是不能正常连接,unset https_proxy HTTPS_PROXY HTTP_PROXY http_proxy ,unset了这些参数也不能成功,出现以下错误,可否解决该问题?
-
一、系统性技术传播,构建完整知识体系本次活动通过"社团获奖成果展示"和"华为开发者空间核心技术介绍"两大环节,系统性地普及了华为云、ModelArts、昇腾AI算力等技术矩阵。针对不同基础的学生群体,设计了差异化的技术传播路径:为初学者解析"开箱即用"的开发便利性,为技术骨干展示"ICT大赛训练营"的实战价值,形成了多层次、立体化的技术知识传播体系。二、沉浸式实践体验,推动技术能力转化活动创新设置"动手工坊"实践环节,提供"AI图像识别模型运行"与"鸿蒙云应用调试"两大技术实践方向。在技术助教团队的指导下,参与者通过15分钟的高效实践,完成了从理论认知到动手实操的完整流程,亲身体验了华为开发平台的技术优势,实现了技术能力的实质性提升。 三、学习社群持续运营,构建技术交流生态活动后成功建立"华为技术学习"微信社群,通过定期分享《新手任务清单》、技术资料包及实战案例,打造了持续活跃的技术交流平台。社群形成了良性的"学习-实践-分享"循环机制,为学生提供了长期的技术成长支持,确保了技术传播的持续性和深入性。四、人才培养初见成效,完善技术传承体系通过本次活动,成功吸引了多名技术骨干关注并意向加入HCSD计划,初步构建了"以学生影响学生"的技术传承模式。这种模式不仅壮大了校园技术布道师队伍,更形成了良好的技术传播氛围,为后续持续开展技术活动奠定了人才基础。五、学训赛创深度融合,验证技术应用路径活动成功将华为开发者空间嵌入学生"学习-训练-竞赛-创新"的成长体系,通过获奖学生的真实案例展示,生动呈现了如何将平台技术能力转化为个人技术实力和竞赛成果。这种模式为参与者提供了清晰的技术成长路径,验证了"技术学习-实践应用-创新产出"的可行性。 六、生态建设持续推进,夯实未来发展基础本次活动不仅是技术知识的传播,更是华为开发者生态在校园的深度落地。通过技术体验、实践应用和社群建设等多个维度,初步构建了可持续发展的校园开发者生态。未来将继续深化与华为开发者生态的合作,通过系列技术工作坊、项目实战和竞赛培育,持续推动创新技术能力培养工作。
-
✨活动背景与宗旨祝贺各位选手圆满完赛!赛场上的奇思妙想与卓越技术,共同呈现了一场精彩纷呈的技术盛宴。赛事虽已落幕,思考与成长永不止步。每一行代码都蕴含着独特思路,每一次调试都沉淀为宝贵经验。为延续这份技术热情,共建共享共进的开发者社区,我们正式启动赛后征文活动。我们相信,个人的经验是火花,众人的分享可汇成照亮前路的星光。诚邀您留下技术干货、备赛心得与真诚建议,为未来的开发者点亮引路明灯,共同滋养我们的开发者技术生态。✨活动主题我们诚挚地邀请您,围绕但不限于以下方向,分享您的故事:技术干货深挖掘:分享您在比赛中解决某个棘手技术难题的思路、算法优化技巧、架构设计心得或使用的炫酷工具/框架。备赛心路全记录:回顾您的备赛历程,如何平衡学业与备赛?有哪些高效的学习方法和资源推荐?心态上是如何调整的?赛事体验与建言:谈谈您对本次赛事组织、赛题设置、平台体验的感受,并提出您宝贵的改进建议,帮助我们做得更好。致未来选手的话:作为一名“过来人”,您最想对下一届的学弟学妹们说些什么?有哪些“避坑”指南或“必胜”秘诀?✨参与对象揭榜挂帅华为赛道获奖团队✨活动时间征文期:即日起至2025年12月7日评审与公示期:征文结束后10个工作日内。✨参与方式在 [挑战杯揭榜挂帅华为赛道-大赛官方论坛-热门活动分享] 以发帖形式参与。帖子标题格式:【赛后分享】+ 自定义标题 (例如:【赛后分享】我是如何用XX算法实现性能突破的】)。论坛链接:cid:link_0🎁奖励机制(重磅激励!)奖项数量奖品“技术之光”头奖8名机械背光键盘“经验之谈”优秀奖10名华为云键盘“积极参与”奖 (若干)若干所有按要求完成投稿的选手,都将获得官方定制的赛事礼品一份(如数据收纳包/折叠双肩包/公牛插座等,仓库随机发送其一) ✨评选标准内容质量 (50%):技术深度、逻辑清晰度、实用性;分享价值 (30%):对后来者的指导与启发意义;互动热度 (20%):帖子在社区内的回复与讨论情况。✨作品要求作品必须为原创首发,不得抄袭;内容需积极向上,与技术、赛事或开发者生态相关;字数建议不少于800字,图文并茂更佳(也可参考链接以下附件征文模版参考)。 🚀🚀你们不仅是比赛的参与者,更是这个技术社区的建设者。您的每一次分享,都可能成为他人前行路上的关键一步。让我们携手,将短暂的比赛,延伸为长久的影响力。期待在论坛中,读到您独一无二的精彩故事!
-
案例介绍本项目是基于华为开发者空间云上开发环境部署的<AI试卷生成与在线测试平台>技术实践案例。该应用深度集成华为云MaaS(ModelArts as a Service)平台提供的DeepSeek-V3大语言模型,充分利用平台提供的百万级商用token处理能力,构建了一个能够一键生成任意学科、任意难度的试卷,提供模拟考试环境、自动评分以及智能解析功能的智能试卷生成与在线测试平台。案例内容一、概述1. 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。本项目是华为开发者空间开发平台 - 云开发环境(容器)部署的<AI试卷生成与在线测试平台>技术实践案例。该应用深度集成华为云MaaS(ModelArts as a Service)平台提供的DeepSeek-V3大语言模型,充分利用平台提供的百万级商用token处理能力,构建了一个能够一键生成任意学科、任意难度的试卷,提供模拟考试环境、自动评分以及智能解析功能的智能试卷生成与在线测试平台。<AI试卷生成与在线测试平台>技术架构上,项目采用react+typescript技术栈,基于华为MaaS平台的强大算力支持,实现了智能解析功能的智能试卷生成与在线测试平台。华为MaaS平台不仅提供高质量的DeepSeek-V3模型,更具备百万token的超长上下文处理能力,使得本应用能够生成准确的试题。前端采用React框架构建响应式界面,后端通过封装MaaS平台API,为用户提供刷题、模拟考试、自动评分、智能解析等功能。2. 功能特性AI 智能出题: 输入任意主题(如“Python基础”、“中国近代史”、“驾考科目一”),即刻生成包含单选、多选、判断题的完整试卷。模拟考试: 沉浸式答题界面,配备倒计时功能。自动评分: 考试结束后立即出分,通过可视化图表展示得分详情。错题回顾: 提供复习模式,高亮显示错题,并附带 AI 生成的详细解析。题集功能: 建立错题难题题集,不断复习巩固知识。题集试卷: 根据题集生成试卷,检验你的学习成果。历史记录: 自动保存考试记录与成绩,随时回溯过往练习。云端同步: 支持配置 Huawei Cloud OBS 将考试记录同步至云端。3. 适用对象企业个人开发者高校学生4. 案例时间本案例总时长预计60分钟。5. 案例流程说明:登录华为开发者空间,VS Code安装Huawei Developer Space插件,远程连接操作云开发环境;远程创建、开机、连接云开发环境(虚拟机);领取百万token代金券福利,开通商用模型服务,获取模型API 地址、API Key等参数;GitCode拉取代码 https://gitcode.com/zhepama/ai-exam-platform.git,安装依赖,修改参数;启动程序,在浏览器端测试验证<AI试卷生成与在线测试平台>。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)华为开发者空间开发平台 - 云开发环境(容器)鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE免费60二、基础环境与资源准备1. VS Code远程连接云开发环境(容器)参考案例《华为开发者空间 - 云开发环境(容器)IDE插件远程连接操作指导》中的“二、云开发环境IDE插件远程连接操作指导”的内容,完成“1. 安装插件” ~ “4. 连接”章节步骤。完成连接之后的状态:2. 领取百万免费token福利参考案例《Versatile Agent中自定义接入大模型配置华为云Maas指导》中的“一、 领取”章节内容,领取华为开发者空间百万token代金券福利,购买ModelArts Studio DeepSeek-V3 轻量体验包(¥3.50)。开通商用模型服务,最后获取API地址、API Key的参数值。三、来刷题吧 - AI试卷生成与在线测试平台1.来刷题吧 - AI试卷生成与在线测试平台功能介绍AI试卷生成与在线测试平台是一个基于DeepSeek大模型的智能聊天应用,提供美观的Web界面和流畅的对话体验。项目采用React + Typescript,结合华为云MaaS平台百万免费商用token,配置DeepSeek-V3大模型。🛠️ 技术栈核心框架: React 19构建工具: ViteUI 样式: Tailwind CSS图标库: Lucide React环境管理: dotenv📂 目录结构server/index.js - 后端服务主入口与路由逻辑src/App.tsx - 前端应用主入口与路由逻辑src/services/geminiService.ts - AI 接口调用与试卷生成逻辑src/services/storageService.ts - 本地存储与云同步逻辑src/components/ - UI 组件库types.ts - TypeScript 类型定义2. 获取来刷题吧 - AI试卷生成与在线测试平台代码新建项目文件在/workspace/node目录下创建ai-exam-platform文件夹。cd /workspace/node mkdir ai-exam-platform cd ai-exam-platform下载代码点击Source Control图标,然后点Initialize Repository。点CHANGES右侧的 ··· 图标,在下拉菜单中选择Clone。输入代码仓地址,Clone from URL: https://gitcode.com/zhepama/ai-exam-platform.git选择代码仓目录:/workspace/ai-exam-platform/,点Select as Repository Destination。然后点Open,将此目录设置为本地代码仓。加载结束后的状态如下:3. 安装项目依赖安装项目依赖npm install2. 修改配置文件,配置API Key在项目根目录下创建一个 .env 文件,参考 .env.example 进行配置:cp .env.example .env打开配置文件.env,修改配置参数。将配置文件中的your_API_Key替换为“二、基础环境与资源准备”章中的“4. 领取百万免费福利”节最后获取到的API Key。配置项说明:变量名必填描述示例API_KEY✅AI 模型的 API 密钥 (Gemini 或 OpenAI)AIzaSy...AI_PROVIDER❌指定 AI 提供商 (gemini 或 openai)openaiAI_MODEL❌指定模型版本deepseek-v3.1AI_BASE_URL❌OpenAI 接口地址 (用于代理)https://api.modelarts-maas.com/v2OBS_SERVER❌连接OBS的服务地址``OBS_ACCESS_KEY_ID❌OBS访问密钥中的AK。``OBS_SECRET_ACCESS_KEY❌OBS访问密钥中的SK。``OBS_BUCKET❌OBS的bucker``JUDGE_COUNT❌判断题数量。5SINGLE_CHOICE_COUNT❌单选题数量。5MULTI_CHOICE_COUNT❌多选题数量5# API配置 # AI Provider Configuration # Options: 'gemini' | 'openai' # Default: 'gemini' AI_PROVIDER=openai # API Key for the selected provider # For Gemini: Get from Google AI Studio # For OpenAI: Get from OpenAI Platform API_KEY=your_API_Key # 替换为你的实际API密钥 # AI Model to use # Default for Gemini: 'gemini-2.5-flash' # Default for OpenAI: 'gpt-3.5-turbo' # You can override this with other models like 'gpt-4', 'gemini-1.5-pro', etc. AI_MODEL=deepseek-v3.1 # AI Base URL # Only used if AI_PROVIDER is 'openai' (or compatible services like DeepSeek, Moonshot, etc.) # Default: 'https://api.openai.com/v1' AI_BASE_URL=https://api.modelarts-maas.com/v2 5. 测试体验来刷题吧 - AI试卷生成与在线测试平台在VS Code终端窗口中运行如下命令,启动来刷题吧 - AI试卷生成与在线测试平台。npm run dev:server在VS Code弹出的对话框中点Open in Browser,或者直接在浏览器中打开:http://localhost:3000/输入测试问题:“驾考科目一”,来刷题吧 - AI试卷生成与在线测试平台正确回答。开始答题提交试卷查看错题每一题都会有答案解析数据同步题集功能 (新增)查看题集题集中会随机出题,供你测试点击题目卡片,卡片反转可以查看答案题集试卷根据题目生成试卷生成新的试卷进行测试吧至此,基于华为开发者空间-云开发环境(容器)+MaaS实现来刷题吧 - AI试卷生成与在线测试平台案例结束,各位开发者快来华为开发者空间体验吧。我正在参加【案例共创】【第8期】基于华为开发者空间云开发环境(容器),集成华为云AI服务(Agent或MaaS API),完成AI应用构建开发最佳实践cid:link_6
-
请问在编译算子的过程中,我使用环境中自带的/usr/local/Ascend-toolkit/latest作为Ascend路径进行处理,发现出现了root权限不足的问题,无法进行后续的算子包部署及调用,请问我需要进行什么修改呢?
-
ssh远程链接notebook的时候,并没有华东二对应的cn-east-4节点可以选;自行添加配置文件的时候按照教程的步骤也没有在git库中找到对应的文件
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签