注销网站 注销主体,办公室装修费用会计分录,安阳 网站建设,电子商务网站建设思维导图近些年#xff0c;随着机器学习技术的蓬勃发展#xff0c;以GPU为代表的一系列专用芯片以优越的高性能计算能力和愈发低廉的成本#xff0c;在机器学习领域得到广泛认可和青睐。GPU等专用芯片以较低的成本提供海量算力#xff0c;已经成为机器学习和AI人工智能领域的核心利…近些年随着机器学习技术的蓬勃发展以GPU为代表的一系列专用芯片以优越的高性能计算能力和愈发低廉的成本在机器学习领域得到广泛认可和青睐。GPU等专用芯片以较低的成本提供海量算力已经成为机器学习和AI人工智能领域的核心利器在人工智能时代发挥着越来越重要的作用。 今天给大家推荐和介绍的“高性能应用服务HAI”是一款大幅降低GPU云服务器使用门槛多角度优化产品使用体验开箱即用。拥有澎湃算力即开即用。以应用为中心匹配GPU云算力资源助力中小企业及开发者快速部署LLM、AI作画、数据科学等高性能应用。 探讨一下如何利用“高性能应用服务HAI”进行业务场景赋能已经是很多公司目前需要面临的问题。本文分享一下“高性能应用服务HAI”在医疗NLP体系中的实践过程希望能通过“高性能应用服务HAI”的方案对公司的业务进行将本增效。 一、为什么在AI的领域需要使用GPU呢 在这些领域中GPU 可以加速训练模型、处理海量数据等计算密集型任务显著提高了计算效率和速度。因此GPU 已成为现代计算机的重要组成部分被广泛应用于各种领域。 1. GPU 和 CPU 的主要区别体现在以下几个方面 2. GPU 的工作原理 二、“高性能应用服务HAI”能够带来什么
1. 什么是HAI呢
高性能应用服务(Hyper Application InventorHAI)是一款面向 Al、科学计算的GPU 应用服务产品提供即插即用的澎湃算力与常见环境。助力中小企业及开发者快速部署LLM、AI作画、数据科学等高性能应用原生集成配套的开发工具与组件大幅提高应用层的开发生产效率。
2. 平时在使用AIGC应用的痛点 3. 高性能应用服务HAI可以让我们干什么
通过“高性能应用服务HAI”的StableDiffusion模型可以进行AI绘画是一种利用深度学习算法进行创作的绘图方式被广泛应用于游戏、数字媒体、电影、广告设计、动画等领域可以让设计师加快绘图相关的工作从“人工”GC逐渐的转向AIGC人工智生产内容。 4. “高性能应用服务HAI”降本增效的结果 5. “高性能应用服务HAI”全面的AI应用托管服务
“高性能应用服务HAI”是根据应用匹配推选GPU算力资源实现最高性价比是面向开发者和企业的AI工程化平台提供了覆盖数据提供、模型开发、模型训练、模型部署的全流程服务。 同时打通必备云服务组件大幅简化云服务配置流程为机器学习开发的每个步骤加速创新包括
分钟级自动构建LLM、AI作画等应用环境适合模型开发、模型训练、模型部署提供多种预装模型环境包含如StableDiffusion、ChatGLM等热门模型提供开发者友好的图形界面支持JupyterLab、WebUI等多种算力连接方AI研究调试超低门槛。学术加速为企业提供训练加速和推理加速的能力提高AI训练和推理的速度、易用性和稳定性极大提升AI计算的效率。 “高性能应用服务HAI”基于软硬件一体优化技术超大规模分布式深度学习任务运行具备高性能、高效率、高利用率等核心优势实现AI开发及应用过程的降本增效。 三、对比GPU云服务器高性能应用服务HAI解决的业务痛点问题
1. 总结优势与劣势 四、“高性能应用服务HAI”的应用场景有哪些 六、基于PyTorch 实现NLP自然语言处理
基于NLP和自然语言处理技术将门诊/住院病历、检查检验报告、处方/医嘱等医疗文档自动识别、转换为结构化数据支持下游可视化、统计分析、推理等应用可用于健康档案、质控、保险理赔及临床科研等业务场景获取医疗知识节约医疗资源。
在公司的业务场景中患者的病例需要手动去针对性的打标签比如标注这个患者是眼疾实际上会有很多的问题存在
工作的性质比较单一枯燥的动作纯粹的人工作业方式有人工成本的消耗操作不准确评判的标准不一致容易产出错误 1. 文本csv内容准备如下为一些患者的病例一些常见的症状描述。 2. 安装jieba库 3. 使用结巴jieba库将语句进行分词库统计词频
为了对中文文本数据进行预处理以便进行NLP分析代码使用中文分词库jieba对患者的数据进行处理。代码读取患者数据的csv文件去除第一行其中包含每列的标签然后循环处理每一行数据。对于每一行提取内容并使用jieba进行分词。
import jiebadata_path sources/data.csv
data_list open(data_path).readlines()[1:]for item in data_list:label item[0]content item[2:].strip()seg_list jieba.cut(content, cut_all False)for seg_item in seg_list:
print(seg_item)可以看到一些标点符号和一些没有语义的词也会被匹配出来得到的分词结果被过滤以去除任何停用词不具有意义的词如“和”或“的”。 4. 停用词stopwords处理 停用词的作用是在文本分析过程中过滤掉这些常见词语从而减少处理的复杂度提高算法效率并且在某些任务中可以改善结果的质量避免分析结果受到这些词的干扰。 在自然语言处理NLP研究中停用词stopwords是指在文本中频繁出现但通常没有太多有意义的词语。这些词语往往是一些常见的功能词、虚词甚至是一些标点符号如介词、代词、连词、助动词等比如中文里的的、“是”、“和”、“了”、“。“等等英文里的the”、“is”、“and”、”…等等。
import jiebadata_path ./sources/his.csv
data_stop_path ./sources/hit_stopwords.txt
data_list open(data_path).readlines()[1:]
stops_word open(data_stop_path, encodingUTF-8).readlines()
stops_word [line.strip() for line in stops_word]
stops_word.append( )
stops_word.append(\n)for item in data_list:label item[0]content item[2:].strip()seg_list jieba.cut(content, cut_all False)seg_res []for seg_item in seg_list:if seg_item in stops_word:continueseg_res.append(seg_item)print(content)print(seg_res)5. 加载数据集
使用PyTorch的提供的dataset的接口根据项目重写dataset和dataloader。
import jiebadata_path ./sources/his.csv
data_stop_path ./sources/hit_stopwords.txtdata_list open(data_path).readlines()[1:]stops_word open(data_stop_path, encodingUTF-8).readlines()
stops_word [line.strip() for line in stops_word]
stops_word.append( )
stops_word.append(\n)voc_dict {}
min_seq 1
top_n 1000
UNK UNK
PAD PADfor item in data_list:label item[0]content item[2:].strip()seg_list jieba.cut(content, cut_all False)seg_res []for seg_item in seg_list:if seg_item in stops_word:continueseg_res.append(seg_item)
if seg_item in voc_dict.keys():voc_dict[seg_item] 1else:voc_dict[seg_item] 1
voc_list sorted([_ for _ in voc_dict.items() if _[1] min_seq],keylambda x: x[1],reverseTrue)[:top_n]voc_dict {word_count[0]: idx for idx, word_count in enumerate(voc_list)}
voc_dict.update({UNK: len(voc_dict), PAD: len(voc_dict) 1})print(voc_dict)# 保存字典
ff open(./sources/dict.txt, w)
for item in voc_dict.keys():ff.writelines({},{}\n.format(item, voc_dict[item]))6. 搭建模型结构
import numpy as np
import jieba
from torch.utils.data import Dataset, DataLoaderdef read_dict(voc_dict_path):voc_dict {}dict_list open(voc_dict_path).readlines()print(dict_list[0])for item in dict_list:item item.split(,)voc_dict[item[0]] int(item[1].strip())return voc_dict# 将数据集进行处理(分词过滤...)
def load_data(data_path, data_stop_path):data_list open(data_path, encodingutf-8).readlines()[1:]stops_word open(data_stop_path, encodingutf-8).readlines()stops_word [line.strip() for line in stops_word]stops_word.append( )stops_word.append(\n)voc_dict {}data []max_len_seq 0np.random.shuffle(data_list)for item in data_list[:]:label item[0]content item[2:].strip()seg_list jieba.cut(content, cut_allFalse)seg_res []for seg_item in seg_list:if seg_item in stops_word:continueseg_res.append(seg_item)if seg_item in voc_dict.keys():voc_dict[seg_item] voc_dict[seg_item] 1else:voc_dict[seg_item] 1if len(seg_res) max_len_seq:max_len_seq len(seg_res)data.append([label, seg_res])# print(max_len_seq)return data, max_len_seq# 定义Dataset
class text_CLS(Dataset):def __init__(self, voc_dict_path, data_path, data_stop_path):self.data_path data_pathself.data_stop_path data_stop_pathself.voc_dict read_dict(voc_dict_path)self.data, self.max_len_seq load_data(self.data_path, self.data_stop_path)np.random.shuffle(self.data)def __len__(self):return len(self.data)def __getitem__(self, item):data self.data[item]label int(data[0])word_list data[1]input_idx []for word in word_list:if word in self.voc_dict.keys():input_idx.append(self.voc_dict[word])else:input_idx.append(self.voc_dict[UNK])if len(input_idx) self.max_len_seq:input_idx [self.voc_dict[PAD] for _ in range(self.max_len_seq - len(input_idx))]# input_idx [1001 for _ in range(self.max_len_seq - len(input_idx))]data np.array(input_idx)return label, data# 定义DataLoader
def data_loader(data_path, data_stop_path, dict_path):dataset text_CLS(dict_path, data_path, data_stop_path)return DataLoader(dataset, batch_size10, shuffleTrue)data_path ./sources/his.csv
data_stop_path ./sources/hit_stopwords.txt
dict_path ./sources/dict.txttrain_dataLoader data_loader(data_path, data_stop_path, dict_path)
for i, batch in enumerate(train_dataLoader):print(batch[0], batch[1].size())
print(batch[0], batch[1])7. 网络模型的配置
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as npclass Config():def __init__(self):self.embeding nn.Embedding(config.n_vocab,config.embed_size,padding_idxconfig.n_vocab - 1)self.lstm nn.LSTM(config.embed_size,config.hidden_size,config.num_layers,bidirectionalTrue, batch_firstTrue,dropoutconfig.dropout)self.maxpool nn.MaxPool1d(config.pad_size)self.fc nn.Linear(config.hidden_size * 2 config.embed_size,config.num_classes)self.softmax nn.Softmax(dim1)self.n_vocab 1002self.embed_size 128self.hidden_size 128self.num_layers 3self.dropout 0.8self.num_classes 2self.pad_size 32self.batch_size 128self.is_shuffle Trueself.learn_rate 0.001self.num_epochs 100self.devices torch.device(cuda if torch.cuda.is_available() else cpu)class Model(nn.Module):def __init__(self, config):super(Model, self).__init__()self.embeding nn.Embedding(config.n_vocab,padding_idxconfig.n_vocab - 1)self.lstm nn.LSTM(input_sizeconfig.embed_size,hidden_sizeconfig.hidden_size,num_layersconfig.num_layers,bidirectionalTrue,batch_firstTrue, dropoutconfig.dropout)self.maxpooling nn.MaxPool1d(config.pad_size)self.fc nn.Linear(config.hidden_size * 2 config.embed_size, config.num_classes)self.softmax nn.Softmax(dim1)def forward(self, x):embed self.embeding(x)out, _ self.lstm(embed)out torch.cat((embed, out), 2)out F.relu(out)out out.permute(0, 2, 1)out self.maxpooling(out).reshape(out.size()[0], -1)out self.fc(out)out self.softmax(out)return out# 测试网络是否正确
cfg Config()
cfg.pad_size 640
model_textcls Model(configcfg)
input_tensor torch.tensor([i for i in range(640)]).reshape([1, 640])
out_tensor model_textcls.forward(input_tensor)
print(out_tensor.size())
print(out_tensor)8. 训练脚本的搭建
model_text_cls Model(cfg)
model_text_cls.to(cfg.devices)
loss_func nn.CrossEntropyLoss()
optimizer optim.Adam(model_text_cls.parameters(), lrcfg.learn_rate)for epoch in range(cfg.num_epochs):for i, batch in enumerate(train_dataloader):label, data batch# data1 torch.tensor(data).to(cfg.devices)# label1 torch.tensor(label).to(cfg.devices)data1 data.sourceTensor.clone().detach().to(cfg.devices)label1 label.sourceTensor.clone().detach().to(cfg.devices)optimizer.zero_grad()pred model_text_cls.forward(data1)loss_val loss_func(pred, label1)print(epoch is {},ite is {},val is {}.format(epoch, i, loss_val))loss_val.backward()optimizer.step()if epoch % 10 0:torch.save(model_text_cls.state_dict(), ./models/{}.pth.format(epoch))9. 小结
可以通过基于PyTorch 实现NLP自然语言处理将患者病例实现AI技术进行转换从而让业务能够快速实现自动化打标签可以起到降本增效的结果。 “高性能应用服务HAI”基于PyTorch 优化的其它类似的场景应用方案 总结
“高性能应用服务HAI”具有澎湃算力即开即用基于腾讯云GPU云服务器底层算力提供开箱即用的高性能云服务。以应用为中心匹配GPU云算力资源助力中小企业及开发者快速部署LLM、AI作画、数据科学等高性能应用。
“高性能应用服务HAI”是面向开发者和企业的云原生机器学习/深度学习工程平台服务覆盖AI开发全链路内置6AI框架和模型具备丰富的行业场景插件。