CN111133409B - 确保人工智能基础设施中的再现性 - Google Patents
确保人工智能基础设施中的再现性 Download PDFInfo
- Publication number
- CN111133409B CN111133409B CN201880059861.3A CN201880059861A CN111133409B CN 111133409 B CN111133409 B CN 111133409B CN 201880059861 A CN201880059861 A CN 201880059861A CN 111133409 B CN111133409 B CN 111133409B
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- machine learning
- artificial intelligence
- dataset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 403
- 238000003860 storage Methods 0.000 claims abstract description 1417
- 238000010801 machine learning Methods 0.000 claims abstract description 554
- 238000006243 chemical reaction Methods 0.000 claims abstract description 171
- 238000012545 processing Methods 0.000 claims abstract description 150
- 230000009466 transformation Effects 0.000 claims abstract description 131
- 238000000844 transformation Methods 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims description 322
- 230000006870 function Effects 0.000 claims description 90
- 238000004590 computer program Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 37
- 230000006872 improvement Effects 0.000 claims description 13
- 230000015654 memory Effects 0.000 description 186
- 238000004891 communication Methods 0.000 description 144
- 238000004458 analytical method Methods 0.000 description 131
- 238000007726 management method Methods 0.000 description 106
- 238000004422 calculation algorithm Methods 0.000 description 103
- 238000012549 training Methods 0.000 description 63
- 239000007787 solid Substances 0.000 description 50
- 230000008569 process Effects 0.000 description 46
- 238000007405 data analysis Methods 0.000 description 38
- 238000012544 monitoring process Methods 0.000 description 36
- 238000012546 transfer Methods 0.000 description 35
- 238000012360 testing method Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 28
- 238000013135 deep learning Methods 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 26
- 238000012550 audit Methods 0.000 description 24
- 238000010223 real-time analysis Methods 0.000 description 23
- 238000004519 manufacturing process Methods 0.000 description 21
- 238000003491 array Methods 0.000 description 19
- 239000004744 fabric Substances 0.000 description 18
- 230000001131 transforming effect Effects 0.000 description 17
- 230000002085 persistent effect Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 15
- 238000005192 partition Methods 0.000 description 14
- 210000004027 cell Anatomy 0.000 description 13
- 230000008859 change Effects 0.000 description 13
- 230000000977 initiatory effect Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 12
- 230000018109 developmental process Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 230000014616 translation Effects 0.000 description 11
- 238000009826 distribution Methods 0.000 description 10
- 230000001976 improved effect Effects 0.000 description 10
- 230000006855 networking Effects 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000013500 data storage Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 239000003990 capacitor Substances 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 238000004146 energy storage Methods 0.000 description 8
- 239000000835 fiber Substances 0.000 description 8
- 230000010354 integration Effects 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 7
- 238000013508 migration Methods 0.000 description 7
- 230000005012 migration Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000004140 cleaning Methods 0.000 description 5
- 238000013499 data model Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000033001 locomotion Effects 0.000 description 5
- 238000007477 logistic regression Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000012384 transportation and delivery Methods 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000013136 deep learning model Methods 0.000 description 4
- 230000037406 food intake Effects 0.000 description 4
- 230000036541 health Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000002787 reinforcement Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 241000287219 Serinus canaria Species 0.000 description 3
- 238000001816 cooling Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013075 data extraction Methods 0.000 description 3
- 238000013523 data management Methods 0.000 description 3
- 238000003066 decision tree Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004941 influx Effects 0.000 description 3
- 238000003064 k means clustering Methods 0.000 description 3
- 238000012417 linear regression Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000008093 supporting effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241000282472 Canis lupus familiaris Species 0.000 description 2
- 241000282326 Felis catus Species 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000001152 differential interference contrast microscopy Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- OWZPCEFYPSAJFR-UHFFFAOYSA-N 2-(butan-2-yl)-4,6-dinitrophenol Chemical compound CCC(C)C1=CC([N+]([O-])=O)=CC([N+]([O-])=O)=C1O OWZPCEFYPSAJFR-UHFFFAOYSA-N 0.000 description 1
- 241000271566 Aves Species 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241000238558 Eucarida Species 0.000 description 1
- 241000238631 Hexapoda Species 0.000 description 1
- 238000012896 Statistical algorithm Methods 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 210000004958 brain cell Anatomy 0.000 description 1
- 239000002041 carbon nanotube Substances 0.000 description 1
- 229910021393 carbon nanotube Inorganic materials 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012411 cloning technique Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000000428 dust Substances 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 238000010978 in-process monitoring Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 230000003137 locomotive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 230000005233 quantum mechanics related processes and functions Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- HOWHQWFXSLOJEF-MGZLOUMQSA-N systemin Chemical compound NCCCC[C@H](N)C(=O)N[C@@H](CCSC)C(=O)N[C@@H](CCC(N)=O)C(=O)N[C@@H]([C@@H](C)O)C(=O)N[C@@H](CC(O)=O)C(=O)OC(=O)[C@@H]1CCCN1C(=O)[C@H]1N(C(=O)[C@H](CC(O)=O)NC(=O)[C@H](CCCN=C(N)N)NC(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H]2N(CCC2)C(=O)[C@H]2N(CCC2)C(=O)[C@H](CCCCN)NC(=O)[C@H](CO)NC(=O)[C@H](CCC(N)=O)NC(=O)[C@@H](NC(=O)[C@H](C)N)C(C)C)CCC1 HOWHQWFXSLOJEF-MGZLOUMQSA-N 0.000 description 1
- 108010050014 systemin Proteins 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/213—Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Medical Informatics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
确保包括一个或多个存储系统和一个或多个图形处理单元(‘GPU’)服务器的人工智能基础设施中的再现性,包括:由统一管理平面识别由人工智能基础设施应用于数据集的一个或多个转换,其中,将一个或多个转换应用于数据集使得人工智能基础设施生成转换数据集;在一个或多个存储系统内存储描述数据集、应用于数据集的一个或多个转换、以及转换数据集的信息;由统一管理平面识别由人工智能基础设施使用转换数据集作为输入而执行的一个或多个机器学习模型;以及在一个或多个存储系统内存储描述使用转换数据集作为输入而执行的一个或多个机器学习模型的信息。
Description
附图说明
图1A示出了根据一些实施方式的用于数据存储的第一示例系统。
图1B示出了根据一些实施方式的用于数据存储的第二示例系统。
图1C示出了根据一些实施方式的用于数据存储的第三示例系统。
图1D示出了根据一些实施方式的用于数据存储的第四示例系统。
图2A是根据一些实施例的存储集群的透视图,存储集群具有多个存储节点以及耦合到每个存储节点以提供网络附接存储装置的内部存储装置。
图2B是示出根据一些实施例的耦合多个存储节点的互连开关的框图。
图2C是多级框图,示出了根据一些实施例的存储节点的内容和非易失性固态存储单元之一的内容。
图2D示出了根据一些实施例的存储服务器环境,其使用一些先前附图的存储节点和存储单元的实施例。
图2E是刀片(blade)硬件框图,示出了根据一些实施例的控制平面、计算和存储平面、以及与基础物理资源交互的权限(authority)。
图2F描绘了根据一些实施例的存储集群的刀片中的弹性软件层。
图2G描绘了根据一些实施例的存储集群的刀片中的权限和存储资源。
图3A阐述了根据本公开的一些实施例的被耦合用于与云服务提供商进行数据通信的存储系统的图。
图3B阐述了根据本公开的一些实施例的存储系统的图。
图4阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的示例方法的流程图。
图5阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图6阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图7阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图8A阐述了示出根据本公开的一些实施例的用于实现被配置为适配于单个机箱内的人工智能和机器学习基础设施的示例计算机架构的图。
图8B阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图9阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图10阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。
图11A阐述了示出根据本公开的一些实施例的示例人工智能和机器学习基础设施的图。
图11B阐述了示出根据本公开的一些实施例的用于在单个机箱内实现人工智能和机器学习基础设施的示例计算机架构的图。
图11C阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施软件栈的示例实施方式的图。
图11D阐述了示出根据本公开的一些实施例的用于互连人工智能和机器学习基础设施的图形处理单元层和存储层的示例方法的流程图。
图12A阐述了示出根据本公开的一些实施例的监测人工智能和机器学习基础设施的示例方法的流程图。
图12B阐述了示出根据本公开的一些实施例的优化人工智能和机器学习基础设施的示例方法的流程图。
图13阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施内的存储系统查询处理的示例方法的流程图。
图14阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施内的存储系统查询处理的示例方法的流程图。
图15阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施内的存储系统查询处理的示例方法的流程图。
图16阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换卸载的示例方法的流程图。
图17阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换卸载的另一示例方法的流程图。
图18阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换卸载的另一示例方法的流程图。
图19阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换卸载的另一示例方法的流程图。
图20阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换缓存的示例方法的流程图。
图21阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换缓存的另一示例方法的流程图。
图22阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换缓存的另一示例方法的流程图。
图23阐述了示出根据本公开的一些实施例的包括一个或多个存储系统和一个或多个GPU服务器的人工智能基础设施中的数据转换缓存的另一示例方法的流程图。
图24阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性(reproducibility)的示例方法的流程图。
图25阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性的另一示例方法的流程图。
图26阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性的另一示例方法的流程图。
图27阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性的示例方法的流程图。
图28阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性的示例方法的流程图。
图29阐述了示出根据本公开的一些实施例的确保人工智能基础设施中的再现性的示例方法的流程图。
具体实施方式
从图1A开始,参考附图描述根据本公开的实施例的用于确保人工智能基础设施中的再现性的示例方法、装置和产品。图1A示出了根据一些实施方式的用于数据存储的示例系统。为了说明而非限制的目的,系统100(在本文中也称为“存储系统”)包括大量元件。注意,在其他实施方式中,系统100可以包括以相同或不同方式配置的相同的、更多的、或更少的元件。
系统100包括多个计算设备164A-B。计算设备(在本文中也称为“客户端设备”)可以体现为例如数据中心、工作站、个人计算机、笔记本电脑等中的服务器。计算设备164A-B可以被耦合以通过存储区域网络(‘SAN’)158或局域网(‘LAN’)160与一个或多个存储阵列102A-B进行数据通信。
SAN 158可以用各种数据通信结构、设备和协议来实现。例如,SAN 158的结构可以包括光纤通道、以太网、无线带宽(Infiniband)、串行连接小型计算机系统接口(‘SAS’)等。与SAN 158一起使用的数据通信协议可以包括高级技术附接(‘ATA’)、光纤通道协议、小型计算机系统接口(‘SCSI’)、互联网小型计算机系统接口(‘iSCSI’)、HyperSCSI、结构上的非易失性存储器快速(Non-Volatile Memory Express,NVMe)等。注意,提供SAN 158是为了说明而不是限制。可以在计算设备164A-B和存储阵列102A-B之间实现其他数据通信耦合。
LAN 160也可以用各种结构、设备和协议来实现。例如,LAN 160的结构可以包括以太网(802.3)、无线(802.11)等。LAN 160中使用的数据通信协议可以包括传输控制协议(‘TCP’)、用户数据报协议(‘UDP’)、互联网协议(‘IP’)、超文本传输协议(‘HTTP’)、无线访问协议(‘WAP’)、手持设备传输协议(‘HDTP’)、会话启动协议(‘SIP’)、实时协议(‘RTP’)等。
存储阵列102A-B可以为计算设备164A-B提供持久性数据存储。在实施方式中,存储阵列102A可以被容纳在机箱(未示出)中,并且存储阵列102B可以被包含在另一机箱(未示出)中。存储阵列102A和102B可以包括一个或多个存储阵列控制器110A-D(在本文中也称为“控制器”)。存储阵列控制器110A-D可以体现为包括计算机硬件、计算机软件、或计算机硬件和软件的组合的自动计算机器的模块。在一些实施方式中,存储阵列控制器110A-D可以被配置为执行各种存储任务。存储任务可以包括将从计算设备164A-B接收的数据写入存储阵列102A-B、从存储阵列102A-B擦除数据、从存储阵列102A-B取回数据并将数据提供给计算设备164A-B、监测和报告磁盘利用率和性能、执行冗余操作(例如,独立驱动器冗余阵列(‘RAID’)或RAID类的数据冗余操作)、压缩数据、加密数据等。
存储阵列控制器110A-D可以以多种方式来实现,包括作为现场可编程门阵列(‘FPGA’)、可编程逻辑芯片(‘PLC’)、专用集成电路(‘ASIC’)、片上系统(‘SOC’)、或包括分立组件(例如,处理设备、中央处理单元、计算机存储器或各种适配器)的任何计算设备。存储阵列控制器110A-D可以包括例如数据通信适配器,其被配置为支持经由SAN 158或LAN160的通信。在一些实施方式中,存储阵列控制器110A-D可以被独立地耦合到LAN 160。在实施方式中,存储阵列控制器110A-D可以包括I/O控制器等,其将存储阵列控制器110A-D通过中间背板(midplane)(未示出)耦合到持久性存储资源170A-B(在本文中也称为“存储资源”),以进行数据通信。持久性存储资源170A-B主要包括任意数量的存储驱动器171A-F(在本文中也称为“存储设备”)和任意数量的非易失性随机存取存储器(‘NVRAM’)设备(未示出)。
在一些实施方式中,持久性存储资源170A-B的NVRAM设备可以被配置为从存储阵列控制器110A-D接收要存储在存储驱动器171A-F中的数据。在一些示例中,数据可以源自计算设备164A-B。在一些示例中,相较于将数据直接写入到存储驱动器171A-F,将数据写入到NVRAM设备可以更快地执行。在实施方式中,存储阵列控制器110A-D可以被配置为利用NVRAM设备作为用于将被写入存储驱动器171A-F的数据的快速可访问缓冲器。相对于其中存储阵列控制器110A-D将数据直接写入存储驱动器171A-F的系统,使用NVRAM设备作为缓冲器的写入请求的延迟可以被改善。在一些实施方式中,NVRAM设备可以通过具有高带宽、低延迟RAM的形式的计算机存储器来实现。NVRAM设备被称为“非易失性”,因为NVRAM设备可以接收或包括单独的电源,该单独的电源可以在NVRAM设备的主电源断电后维持RAM的状态。这样的电源可以是电池、一个或多个电容器等。响应于断电,NVRAM设备可以被配置为将RAM的内容写入诸如存储驱动器171A-F之类的持久性存储装置。
在实施方式中,存储驱动器171A-F可以指被配置为持久性地记录数据的任何设备,其中,“持久性地”或“持久性的”是指设备在断电之后维持所记录的数据的能力。在一些实施方式中,存储驱动器171A-F可以对应于非磁盘存储介质。例如,存储驱动器171A-F可以是一个或多个固态驱动器(‘SSD’)、基于闪存的存储装置、任何类型的固态非易失性存储器、或任何其他类型的非机械存储设备。在其他实施方式中,存储驱动器171A-F可以包括机械或旋转硬盘,例如,硬盘驱动器(‘HDD’)。
在一些实施方式中,存储阵列控制器110A-D可以被配置用于从存储阵列102A-B中的存储驱动器171A-F卸载设备管理职责。例如,存储阵列控制器110A-D可以管理控制信息,该控制信息可以描述存储驱动器171A-F中一个或多个存储器块的状态。控制信息可以指示例如特定存储器块已经发生故障并且不应再被写入、特定存储器块包括用于存储阵列控制器110A-D的启动代码、已在特定存储器块上执行的编程擦除(‘P/E’)循环的数量、存储在特定存储器块中的数据的年龄、存储在特定存储器块中的数据的类型等。在一些实施方式中,控制信息可以与相关联的存储器块一起存储为元数据。在其他实施方式中,用于存储驱动器171A-F的控制信息可以被存储在由存储阵列控制器110A-D选择的存储驱动器171A-F的一个或多个特定存储器块中。可以用指示所选择的存储器块包含控制信息的标识符来标记所选择的存储器块。存储阵列控制器110A-D可以结合存储驱动器171A-F来利用该标识符快速识别包含控制信息的存储器块。例如,存储阵列控制器110A-D可以发出定位包含控制信息的存储器块的命令。注意,控制信息可能如此大而使得控制信息的部分可以被存储在多个位置中、控制信息可以被存储在多个位置中以例如用于冗余的目的、或者控制信息可以以其他方式跨存储驱动器171A-F中的多个存储器块被分发。
在实施方式中,存储阵列控制器110A-D可以通过从存储驱动器171A-F中取回描述存储驱动器中一个或多个存储器块的状态的控制信息,来从存储阵列102A-B的存储驱动器171A-F卸载设备管理职责。可以例如通过存储阵列控制器110A-D向存储驱动器171A-F查询用于特定存储驱动器171A-F的控制信息的位置,来执行从存储驱动器171A-F取回控制信息。存储驱动器171A-F可以被配置为执行使得存储驱动器171A-F能够识别控制信息的位置的指令。指令可以由与存储驱动器171A-F相关联或以其他方式位于存储驱动器171A-F上的控制器(未示出)执行,并且可以使得存储驱动器171A-F扫描每个存储器块的一部分以识别存储用于存储驱动器171A-F的控制信息的存储器块。存储驱动器171A-F可以通过向存储阵列控制器110A-D发送包括用于存储驱动器171A-F的控制信息的位置的响应消息来进行响应。响应于接收到响应消息,存储阵列控制器110A-D可以发出读取存储在与用于存储驱动器171A-F的控制信息的位置相关联的地址处的数据的请求。
在其他实施方式中,存储阵列控制器110A-D还可以通过响应于接收到控制信息而执行存储驱动器管理操作来从存储驱动器171A-F卸载设备管理职责。存储驱动器管理操作可以包括例如通常由存储驱动器171A-F(例如,与特定存储驱动器171A-F相关联的控制器(未示出))执行的操作。存储驱动器管理操作可以包括例如确保不将数据写入存储驱动器171A-F中的故障存储器块、确保以实现足够损耗均衡的方式将数据写入存储驱动器171A-F中的存储器块等。
在实施方式中,存储阵列102A-B可以实现两个或更多个存储阵列控制器110A-D。例如,存储阵列102A可以包括存储阵列控制器110A和存储阵列控制器110B。在给定实例中,存储系统100的单个存储阵列控制器(例如,存储阵列控制器110A)可以指定有主状态(本文中也称为“主控制器”),并且其他存储阵列控制器(例如,存储阵列控制器110A)可以指定有辅状态(在本文中也称为“辅控制器”)。主控制器可以具有特定权限,例如,更改持久性存储资源170A-B中的数据(例如,向持久性存储资源170A-B写入数据)的许可。主控制器的至少一些权限可以取代辅控制器的权限。例如,当主控制器具有更改持久性存储资源170A-B中的数据的权限时,辅助控制器可能没有该许可。存储阵列控制器110A-D的状态可以改变。例如,存储阵列控制器110A可以指定有辅状态,并且存储阵列控制器110B可以指定有主状态。
在一些实施方式中,诸如存储阵列控制器110A之类的主控制器可以用作用于一个或多个存储阵列102A-B的主控制器,并且诸如存储阵列控制器110B之类的辅控制器可以用作用于一个或多个存储阵列102A-B的辅控制器。例如,存储阵列控制器110A可以是用于存储阵列102A和存储阵列102B的主控制器,并且存储阵列控制器110B可以是用于存储阵列102A和102B的辅助控制器。在一些实施方式中,存储阵列控制器110C和110D(也称为“存储处理模块”)可能即不具有主状态也不具有辅状态。被实现为存储处理模块的存储阵列控制器110C和110D可以用作主控制器和辅控制器(例如,分别为存储阵列控制器110A和110B)与存储阵列102B之间的通信接口。例如,存储阵列102A的存储阵列控制器110A可以经由SAN158向存储阵列102B发送写入请求。存储阵列102B的存储阵列控制器110C和110D二者都可以接收该写入请求。存储阵列控制器110C和110D促进通信,例如,将写入请求发送到适当的存储驱动器171A-F。注意,在一些实施方式中,存储处理模块可以用于增加由主控制器和辅控制器控制的存储驱动器的数量。
在实施方式中,存储阵列控制器110A-D经由中间背板(未示出)通信地耦合到一个或多个存储驱动器171A-F以及被包括为存储阵列102A-B的部分的一个或多个NVRAM设备(未示出)。存储阵列控制器110A-D可以经由一个或多个数据通信链路耦合至中间背板,并且该中间背板可以经由一个或多个数据通信链路耦合至存储驱动器171A-F和NVRAM设备。本文中所描述的数据通信链路由数据通信链路108A-D共同示出,并且可以包括例如外围组件互连快速(‘PCIe’)总线。
图1B示出了根据一些实施方式的用于数据存储的示例系统。图1B所示的存储阵列控制器101可以类似于关于图1A描述的存储阵列控制器110A-D。在一个示例中,存储阵列控制器101可以类似于存储阵列控制器110A或存储阵列控制器110B。出于说明而非限制的目的,存储阵列控制器101包括大量元件。注意,在其他实施方式中,存储阵列控制器101可以包括以相同或不同的方式配置的相同的、更多的或更少的元件。注意,图1A的元件可以包括在下文中以辅助示出存储阵列控制器101的特征。
存储阵列控制器101可以包括一个或多个处理设备104和随机存取存储器(‘RAM’)111。处理设备104(或控制器101)代表一个或多个通用处理设备,例如,微处理器、中央处理单元等。更具体地,处理设备104(或控制器101)可以是复杂指令集计算(‘CISC’)微处理器、精简指令集计算(‘RISC’)微处理器、超长指令字(‘VLIW’)微处理器或、实现其他指令集的处理器或实现指令集组合的处理器。处理设备104(或控制器101)还可以是一个或多个专用处理设备,例如,专用集成电路(‘ASIC’)、现场可编程门阵列(‘FPGA’)、数字信号处理器(‘DSP’)、网络处理器等。
处理设备104可以经由数据通信链路106连接到RAM 111,数据通信链路106可以被实现为诸如双倍数据速率4(‘DDR4’)总线之类的高速存储器总线。RAM 111中存储有操作系统112。在一些实施方式中,指令113存储在RAM 111中。指令113可以包括用于在直接映射闪存系统中执行操作的计算机程序指令。在一个实施例中,直接映射闪存系统是一种直接寻址闪存驱动器内的数据块而无需由闪存驱动器的存储控制器执行地址转换的系统。
在实施方式中,存储阵列控制器101包括一个或多个主机总线适配器103A-C,其经由数据通信链路105A-C耦合到处理设备104。在实施方式中,主机总线适配器103A-C可以是将主机系统(例如,存储阵列控制器)连接到其他网络和存储阵列的计算机硬件。在一些示例中,主机总线适配器103A-C可以是使存储阵列控制器101能够连接到SAN的光纤通道适配器、使存储阵列控制器101能够连接到LAN的以太网适配器等。主机总线适配器103A-C可以经由诸如PCIe总线之类的数据通信链路105A-C耦合到处理设备104。
在实施方式中,存储阵列控制器101可以包括耦合到扩展器115的主机总线适配器114。扩展器115可用于将主机系统附接到大量的存储驱动器。在主机总线适配器114被体现为SAS控制器的实施方式中,扩展器115可以例如是SAS扩展器,其用于使主机总线适配器114能够连接到存储驱动器。
在实施方式中,存储阵列控制器101可以包括经由数据通信链路109耦合到处理设备104的交换机116。交换机116可以是可由单个端点创建多个端点的计算机硬件设备,从而使多个设备能够共享单个端点。交换机116可以例如是PCIe交换机,其耦合到PCIe总线(例如,数据通信链路109)并且向中间背板呈现多个PCIe连接点。
在实施方式中,存储阵列控制器101包括用于将存储阵列控制器101耦合到其他存储阵列控制器的数据通信链路107。在一些示例中,数据通信链路107可以是快速通道互连(QPI)互连。
使用传统闪存驱动器的传统存储系统可以在作为传统存储系统的一部分的闪存驱动器上实现过程。例如,存储系统的较高级过程可以在闪存驱动器上发起和控制过程。然而,传统存储系统的闪存驱动器可以包括自身的存储控制器,该存储控制器也执行过程。因此,对于传统的存储系统,可以执行较高级过程(例如,由存储系统发起)和较低级过程(例如,由存储系统的存储控制器发起)二者。
为了解决传统存储系统的各种缺陷,可以由较高级过程而不由较低级过程来执行操作。例如,闪存系统可以具有不包括提供过程的存储控制器的闪存驱动器。因此,闪存系统的操作系统自身可以发起并控制过程。这可以通过直接映射闪存系统来实现,其直接寻址闪存驱动器内的数据块,而无需由闪存驱动器的存储控制器执行地址转换。
闪存系统的操作系统可以识别和维护跨闪存系统的多个闪存驱动器的分配单元的列表。分配单元可以是整体擦除块或多个擦除块。操作系统可以维护直接将地址映射到闪存系统的闪存驱动器的擦除块的映射或地址范围。
到闪存驱动器的擦除块的直接映射可用于重写入数据和擦除数据。例如,可以在包括第一数据和第二数据的一个或多个分配单元上执行操作,其中,第一数据将被保留而第二数据不再被闪存系统使用。操作系统可以发起将第一数据写入其他分配单元内的新位置以及擦除第二数据并将分配单元标记为可用于后续数据的过程。因此,过程可以仅由闪存系统的较高级操作系统来执行,而无需由闪存驱动器的控制器执行附加的较低级过程。
仅由闪存系统的操作系统执行过程的优点包括:由于在过程期间不执行不必要的或冗余的写入操作,提高了闪存系统的闪存驱动器的可靠性。这里可能具有新颖性的点是在闪存系统的操作系统处发起和控制过程的概念。此外,可以由操作系统跨多个闪存驱动器控制过程。这与由闪存驱动器的存储控制器执行过程形成对比。
存储系统可以由出于故障切换目的而共享一组驱动器的两个存储阵列控制器组成、或者存储系统可以由提供使用多个驱动器的存储服务的单个存储阵列控制器组成、或者存储系统可以由各自具有一定数量的驱动器或一定数量的闪存的存储阵列控制器的分布式网络组成,其中,该网络中的存储阵列控制器进行协作以提供完整的存储服务并且在包括存储分配和垃圾收集的存储服务的各个方面进行协作。
图1C示出了根据一些实施方式的用于数据存储的第三示例系统117。出于说明而非限制的目的,系统117(在本文中也称为“存储系统”)包括大量元件。注意,在其他实施方式中,系统117可以包括以相同或不同的方式配置的相同的、更多的或更少的元件。
在一个实施例中,系统117包括具有单独可寻址快速写入存储装置的双外围组件互连(‘PCI’)闪存设备118。系统117可以包括存储设备控制器119。在一个实施例中,存储设备控制器119A-D可以是CPU、ASIC、FPGA、或可以实现根据本公开的必要的控制结构的任何其他电路。在一个实施例中,系统117包括可操作地耦合到存储设备控制器119A-D的各个通道的闪存设备(例如,包括闪存设备120a-n)。闪存设备120a-n可以对控制器119A-D呈现为闪存页面、擦除块、和/或控制元件的可寻址集合,其足以允许存储设备控制器119A-D编程和取回闪存的各个方面。在一个实施例中,存储设备控制器119A-D可以对闪存设备120a-n执行操作,包括存储和取回页面的数据内容、整理和擦除任何块、跟踪与闪存页面的使用和重新使用有关的统计信息、对块和单元进行擦除、跟踪和预测闪存中的错误代码和故障、控制与编程和取回闪存单元的内容相关联的电压水平等。
在一个实施例中,系统117可以包括用于存储单独可寻址快速写入数据的RAM121。在一个实施例中,RAM 121可以是一个或多个单独的分立设备。在另一实施例中,RAM121可以被集成到存储设备控制器119A-D或多个存储设备控制器中。RAM 121也可以用于其他目的,例如,用于存储设备控制器119中的处理设备(例如,CPU)的临时程序存储器。
在一个实施例中,系统119A-D可以包括储能设备122,例如,可再充电电池或电容器。储能设备122可以存储足够的能量以对存储设备控制器119A-D、一定数量的RAM(例如,RAM 121)、以及一定数量的闪存(例如,闪存120a-120n)供电足够的时间以将RAM的内容写入闪存。在一个实施例中,如果存储设备控制器119A-D检测到外部电源断电,则存储设备控制器119A-D可以将RAM的内容写入闪存。
在一个实施例中,系统117包括两个数据通信链路123a、123b。在一个实施例中,数据通信链路123a、123b可以是PCI接口。在另一实施例中,数据通信链路123a、123b可以基于其他通信标准(例如,超传输、无线带宽等)。数据通信链路123a、123b可以基于非易失性存储器快速(‘NVMe’)或结构上NVMe(‘NVMf’)规范,其允许从存储系统117中的其他组件到存储设备控制器119A-D的外部连接。应注意,为方便起见,数据通信链路在本文中可互换地称为PCI总线。
系统117还可以包括外部电源(未示出),该外部电源可以在数据通信链路123a、123b中的一者或两者上提供,或者该外部电源可以被单独地提供。替代实施例包括专用于存储RAM 121的内容的单独的闪存(未示出)。存储设备控制器119A-D可以呈现PCI总线上的逻辑设备(可以包括可寻址快速写入逻辑设备)、或存储设备118的逻辑地址空间的不同部分,其可以呈现为PCI存储器或持久性存储装置。在一个实施例中,要存储到设备中的操作被引导到RAM 121中。在电源故障时,存储设备控制器119A-D可以将与可寻址快速写入逻辑存储装置相关联的存储内容写入闪存(例如,闪存120a-n)以用于长期持久性存储。
在一个实施例中,逻辑设备可以包括闪存设备120a-n的内容中的一些或全部的某种呈现,其中,该呈现允许包括存储设备118的存储系统(例如,存储系统117)直接地对闪存页面进行寻址,并且通过PCI总线从存储设备外部的存储系统组件直接对擦除块进行重新编程。该呈现还可以允许外部组件中的一个或多个控制并取回闪存的其他方面,包括以下各项中的一些或全部:跟踪与使用和重新使用所有闪存器设备中的闪存页面、擦除块和单元有关的统计信息;跟踪并预测在闪存设备内和跨闪存设备的错误代码和故障;控制与编程和取回闪存单元的内容相关联的电压水平;等等。
在一个实施例中,储能设备122可足以确保完成对闪存设备107a-120n的进行中的操作,为了这些操作以及为了将快速写入RAM存储到闪存,储能设备122可以对存储设备控制器119A-D以及相关联的闪存设备(例如,120a-n)进行供电。储能设备122可以用于存储由闪存设备120a-n和/或存储设备控制器119所保持和跟踪的累积统计信息和其他参数。单独的电容器或储能设备(例如,靠近或者嵌入在闪存设备本身内的较小电容器)可以被用于本文描述的操作中的一些或全部。
可以使用各种方案来跟踪并优化储能组件的寿命,例如,随着时间调整电压水平、对储能设备122部分地放电以测量对应的放电特性等。如果可用能量随着时间减少,则可以减少可寻址快速写入存储装置的有效可用容量以确保其可基于当前可用的存储能量而安全地进行写入。
图1D示出了根据一些实施方式的用于数据存储的第三示例系统124。在一个实施例中,系统124包括存储控制器125a、125b。在一个实施例中,存储控制器125a、125b分别可操作地耦合到双PCI存储设备119a、119b和119c、119d。存储控制器125a、125b可以可操作地耦合(例如,经由存储网络130)到一定数量的主机计算机127a-n。
在一个实施例中,两个存储控制器(例如,125a和125b)提供存储服务,例如,SCS块存储阵列、文件服务器、对象服务器、数据库或数据分析服务等。存储控制器125a、125b可以通过一定数量的网络接口(例如,126a-d)向存储系统124外部的主机计算机127a-n提供服务。存储控制器125a、125b可以提供完全在存储系统124内的集成服务或应用,形成聚集存储和计算系统。存储控制器125a、125b可以利用在存储设备控制器119a-d内或跨存储设备控制器119a-d的快速写入存储器来记录(journal)进行中的操作,以确保在电源故障、存储控制器移除、存储控制器或存储系统关闭、或存储系统124内的一个或多个软件或硬件组件的某个故障时,这些操作不丢失。
在一个实施例中,控制器125a、125b用作对PCI总线128a、128b中的一个或另一个的PCI主机。在另一实施例中,128a和128b可以基于其他通信标准(例如,超传输、无限带宽等)。其他存储系统实施例可以操作存储控制器125a、125b作为用于PCI总线128a、128b二者的多主机。替代地,PCI/NVMe/NVMf交换基础设施或结构可以连接多个存储控制器。一些存储系统实施例可以允许存储设备彼此直接地通信,而不是仅与存储控制器进行通信。在一个实施例中,存储设备控制器119a可以在来自存储控制器125a的指导下操作,以从已被存储在RAM(例如,图1C的RAM 121)中的数据中合成并传送要存储到闪存设备中的数据。例如,可以在存储控制器已确定操作已跨存储系统完全提交之后、或者当设备上的快速写入存储器已达到某个使用容量时、或者在一定量的时间之后传送RAM内容的重新计算的版本,以确保提高数据的安全性或者释放可寻址快速写入容量以供重新使用。例如,可以使用这种机制来避免通过总线(例如,128a、128b)从存储控制器125a、125b的第二传送。在一个实施例中,重新计算可以包括压缩数据、附加索引或其他元数据、将多个数据段组合在一起、执行擦除码计算等。
在一个实施例中,在来自存储控制器125a、125b的指导下,存储设备控制器119a、119b可以操作以在没有存储控制器125a、125b的参与的情况下根据存储在RAM(例如,图1C的RAM 121)中的数据来计算数据并将数据传送到其他存储设备。此操作可以用于将存储在一个控制器125a中的数据镜像到另一控制器125b,或者该操作可以用于到存储设备的卸载压缩、数据聚合、和/或擦除编码计算和传送,以减少存储控制器上或到PCI总线128a、128b的存储控制器接口129a、129b上的负载。
存储设备控制器119A-D可以包括用于实现高可用性基元(primitives)以供双PCI存储设备118外部的存储系统的其他部分使用的机制。例如,可以提供保留或排除基元,使得在具有提供高度可用存储服务的两个存储控制器的存储系统中,一个存储控制器可以防止另一存储控制器访问或者继续访问存储设备。这可以用于例如其中一个控制器检测到另一控制器没有在适当地起作用、或者其中两个存储控制器之间的互连本身可能没有适当地起作用的情况。
在一个实施例中,与具有单独可寻址快速写入存储装置的双PCI直接映射存储设备一起使用的存储系统包括以下系统,该系统将擦除块或擦除块组作为分配单元来管理,其中该分配单元用于存储代表存储服务的数据、或者用于存储与存储服务相关联的元数据(例如,索引、日志等)、或者用于存储系统本身的适当管理。可以在数据到达时或者当存储系统将在长时间间隔(例如,高于定义的时间阈值)内保持数据时对闪存页面(其在大小上可以是几千字节)进行写入。为了更快地提交数据或者为了减少对闪存设备的写入次数,存储控制器可以首先将数据写入到一个或多个存储设备上的单独可寻址快速写入存储装置中。
在一个实施例中,存储控制器125a、125b可以根据存储设备的年龄和预期剩余寿命、或者基于其他统计信息来发起对在存储设备(例如,118)内的和跨存储设备的擦除块的使用。存储控制器125a、125b可以根据不再需要的页面来发起存储设备之间的垃圾收集和数据迁移,以及管理闪存页面和擦除块寿命并管理整体系统性能。
在一个实施例中,存储系统124可以将镜像和/或擦除编码方案用作将数据存储到可寻址快速写入存储装置中的一部分和/或用作将数据写入与擦除块相关联的分配单元中的一部分。可以跨存储设备、以及在擦除块或分配单元内、或者在单个存储设备上的闪存设备内和跨单个存储设备上的闪存设备使用擦除码,以针对单个或多个存储设备故障提供冗余、或者针对由于闪存操作或者由于闪存单元的退化而导致的闪存页面的内部损坏进行保护。可以使用各种级别下的镜像和擦除编码来从单独地或相结合地发生的多种类型的故障中恢复。
参考图2A-G所描绘的实施例示出了存储用户数据(例如,源自一个或多个用户或客户端系统或存储集群外部的其他源的用户数据)的存储集群。存储集群使用擦除编码和元数据的冗余副本来跨容纳在机箱内的存储节点、或者跨多个机箱分发用户数据。擦除编码指代数据保护或重建的方法,其中,数据跨一组不同的位置(例如,磁盘、存储节点或地理位置)被存储。闪存是可以与实施例集成的一种类型的固态存储器,但是可以将实施例扩展到其他类型的固态存储器或其他存储介质(包括非固态存储器)。对存储位置和工作负载的控制跨集群对等系统中的存储位置分布。诸如调解各个存储节点之间的通信、检测存储节点何时已变得不可用、以及平衡跨各个存储节点的I/O(输入和输出)之类的任务全部在分布式基础上被处理。在一些实施例中,数据以支持数据恢复的数据分段或条带来跨多个存储节点布局或者分发。可独立于输入和输出模式在集群内重新指配对数据的所有权。下面更详细地描述的该架构允许集群中的存储节点故障,并且系统仍然是可操作的,因为数据可从其他存储节点重建并且因此仍然可用于输入和输出操作。在各种实施例中,存储节点可以被称为集群节点、刀片或服务器。
存储集群可以被包含在机箱(即容纳一个或多个存储节点的封装)内。机箱内包括用于向每个存储节点提供电力的机构(例如,配电总线)和通信机构(例如,实现存储节点之间的通信的通信总线)。根据一些实施例,存储集群可作为一个位置中的独立系统来运行。在一个实施例中,机箱包含配电总线和通信总线二者的至少两个实例,其可以独立地启用或者禁用。内部通信总线可以是以太网总线,然而,诸如PCIe、无限带宽之类的其他技术是同样适合的。机箱提供用于外部通信总线的端口以使得能实现多个机箱之间(直接地或通过交换机)的通信以及与客户端系统的通信。外部通信可以使用诸如以太网、无限带宽、光纤通道之类的技术。在一些实施例中,外部通信总线针对机箱间通信和客户端通信使用不同的通信总线技术。如果交换机部署在机箱内或者在机箱之间,则该交换机可以用作多种协议或技术之间的转换。当多个机箱被连接以定义存储集群时,客户端可以使用专有接口或标准接口(例如,网络文件系统(‘NFS’)、通用互联网文件系统(‘CIFS’)、小型计算机系统接口(‘SCSI’)或超文本传输协议(‘HTTP’))来访问存储集群。从客户端协议的转换可以发生在交换机处、机箱外部通信总线处、或者每个存储节点内。在一些实施例中,多个机箱可以通过聚合器交换机彼此耦合或者连接。可以将耦合或连接的机箱的一部分和/或全部指定为存储集群。如上面所讨论的,每个机箱可具有多个刀片,每个刀片具有介质访问控制(‘MAC’)地址,但是在一些实施例中,存储集群对于外部网络被呈现为具有单个集群IP地址和单个MAC地址。
每个存储节点可以是一个或多个存储服务器,并且每个存储服务器被连接到一个或多个非易失性固态存储器单元,其可以被称为存储单元或存储设备。一个实施例在每个存储节点中以及在一个至八个非易失性固态存储器单元之间包括单个存储服务器,但该一个示例不意图为限制性的。存储服务器可以包括处理器、DRAM、以及用于内部通信总线和电源总线中的每一个的电力分配的接口。在一些实施例中,在存储节点内部,接口和存储单元共享通信总线,例如,PCI快速(PCI express)。非易失性固态存储器单元可以通过存储节点通信总线来直接地访问内部通信总线接口,或者请求存储节点访问总线接口。在一些实施例中,非易失性固态存储器单元包含嵌入式CPU、固态存储控制器、和一定量的固态大容量存储装置(例如,2-32个太字节(‘TB’)之间)。嵌入式易失性存储介质(例如,DRAM)和能量储备装置被包括在非易失性固态存储器单元中。在一些实施例中,能量储备装置是使得能够在断电的情况下将DRAM内容的子集传送到稳定存储介质的电容器、超级电容器或电池。在一些实施例中,非易失性固态存储器单元由存储类存储器构成,例如,替代DRAM并且实现功率减小的保持(hold-up)装置的相变或磁阻随机存取存储器(‘MRAM’)。
存储节点和非易失性固态存储装置的许多特征之一是在存储集群中前摄地重建数据的能力。存储节点和非易失性固态存储装置可以确定存储集群中的存储节点或非易失性固态存储何时是不可达的,而不管是否存在读取涉及该存储节点或非易失性固态存储的数据的尝试。然后,存储节点和非易失性固态存储协作以在至少部分新的位置中恢复和重建数据。这构成了前摄重建,因为系统无需等到从利用存储集群的客户端系统发起的读取访问需要数据就重建数据。在下文中讨论了存储存储器及其操作的这些和另外的细节。
图2A是根据一些实施例的存储集群161的透视图,存储集群161具有多个存储节点150和耦合到每个存储节点以提供网络附接存储装置或存储区域网络的内部固态存储器。网络附接存储装置、存储区域网络、或存储集群、或其他存储存储器可以按照物理组件和由此提供的存储存储器的数量两者的灵活且可重构布置来包括一个或多个存储集群161,其各自具有一个或多个存储节点150。存储集群161被设计为适配在机架内,并且可以如存储存储器所期望的来设置和填充一个或多个机架。存储集群161具有机箱138,机箱138具有多个插槽142的。应理解,机箱138可以被称为外壳、封装或机架单元。在一个实施例中,机箱138具有十四个插槽142,但容易地设计其他数量的插槽。例如,一些实施例具有四个插槽、八个插槽、十六个插槽、三十二个插槽、或其他适当数量的插槽。在一些实施例中,每个插槽142可容纳一个存储节点150。机箱138包括可用于将机箱138安装在机架上的片状物(flap)148。风扇144提供用于冷却存储节点150及其组件的空气循环,但是可以使用其他冷却组件,或者可以设计没有冷却组件的实施例。交换结构146将存储节点150在机架138内耦合在一起并且耦合到网络以用于与存储器进行通信。在本文中描绘的实施例中,出于说明性目的,在交换结构146和风扇144左侧的插槽142被示出为被存储节点150占据,而在交换结构146和风扇144右侧的插槽142是空的并且可用于插入存储节点150。此配置是一个示例,并且一个或多个存储节点150可以按照各种另外的布置来占据插槽142。在一些实施例中,存储节点布置不需要是顺序的或相邻的。存储节点150是可热插拔的,意味着存储节点150可被插入到机箱138中的插槽142中或者从插槽142中移除,而不用停止或者关闭系统。在从插槽142中插入或者移除存储节点150时,系统自动地重新配置以便识别并适应变化。在一些实施例中,重新配置包括恢复冗余和/或重新平衡数据或负载。
每个存储节点150可具有多个组件。在本文所示的实施例中,存储节点150包括印刷电路板159,其填充有CPU 156(即处理器)、耦合到CPU 156的存储器154、以及耦合到CPU156的非易失性固态存储装置152,但可以在另外的实施例中使用其他安装件和/或组件。存储器154具有由CPU 156执行的指令和/或由CPU 156操作的数据。如在下面进一步说明的,非易失性固态存储装置152包括闪存,或者在另外的实施例中,包括其他类型的固态存储器。
如上所述,参考图2A,存储集群161是可扩展的,意味着容易地添加具有非均匀存储大小的存储容量。在一些实施例中,一个或多个存储节点150可被插入到每个机箱中或者从每个机箱中移除,并且存储集群自配置。插入式存储节点150(无论是在交付时安装在机箱中还是稍后添加)可具有不同的大小。例如,在一个实施例中,存储节点150可具有4TB的任意倍,例如,8TB、12TB、16TB、32TB等。在另外的实施例中,存储节点150可以具有其他存储量或容量的任意倍。每个存储节点150的存储容量被广播,并且影响对如何条带化数据的决定。为了最大存储效率,实施例可在条带中尽可能宽地自配置,受限于在机箱内在失去多达一个或多达两个非易失性固态存储单元152或存储节点150情况下对持续操作的预定要求。
图2B是示出耦合多个存储节点150的通信互连173和配电总线172的框图。参考回图2A,在一些实施例中,通信互连173可以被包括在交换结构146中或者利用交换结构146来实现。在一些实施例中,在多个存储集群161占据机架的情况下,通信互连173可以被包括在架顶式交换机中或者利用架顶式交换机来实现。如图2B所示,存储集群161被封装在单个机箱138内。外部端口176通过通信互连173耦合到存储节点150,而外部端口174直接地耦合到存储节点。外部电源端口178耦合到配电总线172。存储节点150可以包括不同数量和不同容量的如参考图2A所描述的非易失性固态存储装置152。此外,一个或多个存储节点150可以是如图2B所示的仅计算存储节点。权限168被实现在非易失性固态存储装置152上,例如,作为存储在存储器中的列表或其他数据结构。在一些实施例中,权限被存储在非易失性固态存储装置152内并且由在非易失性固态存储装置152的控制器或其他处理器上执行的软件支持。在另一实施例中,权限168被实现在存储节点150上,例如,作为存储在存储器154中的列表或其他数据结构,并且由在存储节点150的CPU 156上执行的软件支持。在一些实施例中,权限168控制数据被存储在非易失性固态存储装置152中的方式和位置。该控制辅助确定哪种类型的擦除编码方案被应用于数据,以及哪些存储节点150具有数据的哪些部分。可以将每个权限168指派给非易失性固态存储装置152。在各种实施例中,每个权限可以控制通过文件系统、通过存储节点150、或者通过非易失性固态存储装置152指派给数据的一定范围的索引节点(inode)号、分段号或其他数据标识符。
在一些实施例中,每条数据和每条元数据在系统中有冗余。此外,每条数据和每条元数据有所有者,该所有者可以被称为权限。如果该权限例如由于存储节点的故障而是不可达的,则存在如何查找该数据或该元数据的连续计划。在各种实施例中,存在权限168的冗余副本。在一些实施例中,权限168具有与存储节点150和非易失性固态存储装置152的关系。覆盖数据的一定范围的数据分段编号或其他标识符的每个权限168可被指派给特定非易失性固态存储装置152。在一些实施例中,所有这样的范围的权限168被分发在存储集群的非易失性固态存储装置152上。每个存储节点150具有网络端口,该网络端口提供对该存储节点150的(一个或多个)非易失性固态存储装置152的访问。在一些实施例中,数据可被存储在与分段编号相关联的分段中并且该分段编号是对RAID(独立磁盘冗余阵列)条带的配置的间接指示(indirection)。对权限168的指派和使用因此确立了对数据的间接指示。根据一些实施例,间接指示可以被称为间接地(在这种情况下经由权限168)引用数据的能力。分段将一组非易失性固态存储装置152和本地标识符标识到可能包含数据的该组非易失性固态存储装置152中。在一些实施例中,本地标识符是到设备中的偏移并且可以被多个分段顺序地重新使用。在其他实施例中,本地标识符对于特定分段是唯一的并且从不被重新使用。非易失性固态存储装置152中的偏移被应用于定位数据以用于从非易失性固态存储装置152(以RAID条带的形式)进行写入或读取。跨非易失性固态存储装置152的多个单元对数据进行条带化,其可以包括或者不同于具有用于特定数据分段的权限168的非易失性固态存储装置152。
如果数据的特定分段所处的位置有变化,例如,在数据移动或数据重建期间,则应该在具有权限168的该非易失性固态存储装置152或存储节点150处询问用于该数据分段的权限168。为了定位特定条的数据,实施例计算数据分段的散列值或者应用索引节点号或数据分段号。此操作的输出指向具有用于该特定条的数据的权限168的非易失性固态存储装置152。在一些实施例中,此操作有两个阶段。第一阶段将实体标识符(ID)(例如,分段号、索引节点号或目录号)映射到权限标识符。此映射可以包括计算例如散列或位掩码。第二阶段是将权限标识符映射到特定非易失性固态存储装置152,这可以通过显式映射来完成。操作是可重复的,使得当执行计算时,计算的结果重复地且可靠地指向具有该权限168的特定非易失性固态存储装置152。操作可以包括一组可达存储节点作为输入。如果该组可达非易失性固态存储单元改变,则最佳集合改变。在一些实施例中,持久值是当前指派(其总是为真)并且所计算的值是集群将试图重新配置到的目标指派。此计算可以用于在存在可达并构成同一集群的一组非易失性固态存储装置152的情况下为权限确定最佳非易失性固态存储装置152。计算还确定还将记录权限到非易失性固态存储装置映射的一组有序对等非易失性固态存储装置152,使得即使所指派的非易失性固态存储装置是不可到达的,也可以确定权限。在一些实施例中,如果特定权限168不可用,则可询问复制或替代权限168。
参考图2A和图2B,存储节点150上的CPU 156的许多任务中的两个任务是分解写入数据,以及重组读取数据。当系统已确定数据将被写入时,用于该数据的权限168被如上所述地定位。当已经确定数据的分段ID时,写入请求被转发到当前被确定为根据分段所确定的权限168的主机的非易失性固态存储装置152。非易失性固态存储装置152和相应的权限168驻留在其上的存储节点150的主机CPU 156然后对数据进行分解或者分片,并且将数据发出到各个非易失性固态存储装置152。根据擦除编码方案将所发送的数据作为数据条带写入。在一些实施例中,请求拉取数据,并且在其他实施例中,数据被推送。相反地,当数据被读取时,如上所述地定位针对包含数据的分段ID的权限168。非易失性固态存储装置152和相应的权限168驻留在其上的存储节点150的主机CPU 156从权限所指向的非易失性固态存储装置和相应的存储节点请求数据。在一些实施例中,数据从闪存存储装置作为数据条带被读取。存储节点150的主机CPU 156然后重组所读取的数据,根据适当的擦除编码方案来校正任何错误(若存在),并且将经重组的数据转发到网络。在另外的实施例中,可在非易失性固态存储装置152中处理这些任务中的一些或全部。在一些实施例中,分段主机通过从存储装置请求页面来请求被发送到存储节点150的数据,并且然后将数据发送到做出原始请求的存储节点。
在一些系统中,例如,在UNIX类型的文件系统中,利用索引节点来处理数据,其指定表示文件系统中的对象的数据结构。例如,对象可以是文件或目录。元数据可以作为诸如许可数据和创建时间戳之类的属性以及其他属性伴随对象。可以将分段号指派给文件系统中的这样的对象的全部或一部分。在其他系统中,利用在别处指派的分段号处理数据分段。出于讨论的目的,分发的单元是实体,并且实体可以是文件、目录或分段。也就是说,实体是由存储系统存储的数据或元数据的单元。实体被分组成称作权限的集合。每个权限有权限所有者,所述权限所有者是有更新权限中的实体的排他性权限的存储节点。换句话说,存储节点包含权限,并且权限进而包含实体。
根据一些实施例,分段是数据的逻辑容器。分段是介质地址空间之间的地址空间,并且物理闪存位置(即数据分段号)在此地址空间中。分段还可以包含元数据,元数据使得数据冗余能够在没有更高级软件的参与的情况下被恢复(重写到不同的闪存位置或设备)。在一个实施例中,分段的内部格式包含客户端数据和介质映射以确定该数据的位置。在适用的情况下,通过将分段分解成许多数据和奇偶分片,每个数据分段被保护例如免于存储器和其他故障。数据和奇偶分片根据擦除编码方案被分发(即条带化)在耦合到主机CPU156的非易失性固态存储装置152上(参见图2E和图2G)。在一些实施例中,对术语分段的使用指代容器及其在分段的地址空间中的位置。根据一些实施例,对术语条带的使用指代与分段相同的一组分片并且包括分片如何连同冗余或奇偶信息一起被分发。
一系列地址空间转换跨整个存储系统发生。在顶部的是链接到索引节点的目录条目(文件名)。索引节点指向逻辑地存储数据的介质地址空间中。可以通过一系列间接介质来映射介质地址以分散较大文件的负载,或者实现如重复数据删除或快照的数据服务。可以通过一系列间接介质来映射介质地址以分散较大文件的负载,或者实现如重复数据删除或快照那样的数据服务。分段地址然后被转换成物理闪存位置。根据一些实施例,物理闪存位置具有受系统中的闪存量约束的地址范围。介质地址和分段地址是逻辑容器,并且在一些实施例中,使用128位或更大的标识符以便实际上是无限大的,具有被计算为比系统的预期寿命更长的重新使用的可能性。在一些实施例中,以分层方式分配来自逻辑容器的地址。初始地,可以为每个非易失性固态存储单元152指派地址空间的范围。在该指派的范围内,非易失性固态存储装置152能够在不用与其他非易失性固态存储装置152同步的情况下分配地址。
数据和元数据按照针对不同的工作负载模式和存储设备优化的一组底层存储布局来存储。这些布局合并多种冗余方案、压缩格式和索引算法。这些布局中的一些存储关于权限和权限主机的信息,而其他布局存储文件元数据和文件数据。冗余方案包括容忍单个存储设备(例如,NAND闪存芯片)内的损坏位的纠错码、容忍多个存储节点的故障的擦除码、以及容忍数据中心或区域故障的复制方案。在一些实施例中,在单个存储单元内使用低密度奇偶校验(‘LDPC’)码。在一些实施例中,在存储集群内使用里德-所罗门(Reed-Solomon)编码,并且在存储网格内使用镜像。可以使用有序日志结构化索引(例如,日志结构化合并树)来存储元数据,并且可以不在日志结构化布局中存储大数据。
为了跨实体的多个副本维持一致性,存储节点通过计算隐式地对以下两项内容达成一致:(1)包含实体的权限,以及(2)包含权限的存储节点。可通过将实体伪随机地指派给权限、通过基于外部产生的密钥将实体分割成范围、或者通过将单个实体放置到每个权限中来完成将实体指派给权限。伪随机方案的示例是线性散列和可扩展散列下的复制(‘RUSH’)系列散列,包括可扩展散列下的受控复制(‘CRUSH’)。在一些实施例中,伪随机指派仅被用于将权限指派给节点,因为该组节点可改变。该组权限不能改变,所以可以在这些实施例中应用任何隶属函数(subjective function)。一些放置方案将权限自动地放置在存储节点上,而其他放置方案依赖于权限到存储节点的显式映射。在一些实施例中,利用伪随机方案来从每个权限映射到一组候选权限所有者。与CRUSH有关的伪随机数据分发函数可以将权限指派给存储节点并且创建在哪里指派了权限的列表。每个存储节点具有伪随机数据分发函数的副本,并且可得到相同的计算以用于分发,并且稍后寻找或者定位权限。在一些实施例中,每种伪随机方案要求一组可达存储节点作为输入,以便推断出相同的目标节点。一旦实体已被放置在权限中,该实体就可以被存储在物理设备上,使得没有预期故障将导致意外的数据丢失。在一些实施例中,重新平衡算法试图将权限内的所有实体的副本存储在同一布局中并且在同一组机器上。
预期故障的示例包括设备故障、被盗机器、数据中心火灾和区域灾难,例如,核或地质事件。不同的故障导致不同级别的可接受的数据丢失。在一些实施例中,被盗存储节点既不影响系统的安全也不影响系统的可靠性,而取决于系统配置,区域事件可能导致无数据丢失、几秒或几分钟的更新丢失、或甚至完全数据丢失。
在实施例中,用于存储冗余的数据的放置独立于用于数据一致性的权限的放置。在一些实施例中,包含权限的存储节点不包含任何持久性存储装置。替代地,存储节点被连接到不包含权限的非易失性固态存储单元。存储节点与非易失性固态存储单元之间的通信互连由多种通信技术构成,并且具有非均匀的性能和容错特性。在一些实施例中,如上面所提及的,非易失性固态存储单元经由PCI快速连接到存储节点,存储节点使用以太网背板在单个机箱内连接在一起,并且机箱连接在一起以形成存储集群。在一些实施例中,存储集群使用以太网或光纤信道连接到客户端。如果将多个存储集群配置到存储网格中,则使用互联网或其他远程联网链路(例如,不遍历互联网的“城域规模”链路或私有链路)来连接多个存储集群。
权限所有者具有修改实体、将实体从一个非易失性固态存储单元迁移到另一非易失性固态存储单元、以及添加和移除实体的副本的排他性权限。这允许实现维护底层数据的冗余。当权限所有者发生故障、将要报废、或者过载时,权限被转移到新的存储节点。瞬态故障使得确保所有无故障机器对新的权限位置达成一致是有意义的。可通过诸如Paxos、热温故障转移方案之类的一致性协议、经由通过远程系统管理员或者通过本地硬件管理员进行的手动干预(例如,通过从集群物理地移除故障机器、或者按故障机器上的按钮),来自动地实现由于瞬态故障而出现的模糊性。在一些实施例中,使用一致性协议,并且故障转移是自动的。根据一些实施例,如果在过短的时间段内发生过多的故障或复制事件,则系统进入自我保存模式并暂停复制和数据移动活动,直到管理员干预为止。
当权限在存储节点之间转移并且权限所有者更新其权限中的实体时,系统在存储节点与非易失性固态存储单元之间转移消息。关于持久性消息,具有不同目的的消息具有不同的类型。取决于消息的类型,系统维持不同的排序和耐久性保证。当持久性消息被处理时,消息被临时存储在多个耐久和非耐久存储硬件技术中。在一些实施例中,消息被存储在RAM、NVRAM中并存储在NAND闪存设备上,并且使用各种协议以便高效地利用每个存储介质。延迟敏感的客户端请求可以被存留在复制的NVRAM中,然后稍后存留在NAND中,而后台重新平衡操作被直接存留到NAND。
持久性消息在被发送之前被持久地存储。这允许系统不管是否有故障和组件更换都继续为客户端请求服务。尽管许多硬件组件包含对系统管理员、制造商、硬件供应链和进行中的监测质量控制基础设施可见的唯一标识符,然而在基础设施地址之上运行的应用对地址进行虚拟化。与组件故障和更换无关,这些虚拟化地址都不会在存储系统的生命周期期间改变。这允许在没有客户端请求处理的重新配置或中断的情况下随时间更换存储系统的每个组件,即系统支持非中断升级。
在一些实施例中,利用足够的冗余存储虚拟化地址。连续监测系统使硬件和软件状态与硬件标识符相关联。这允许检测并预测由于故障组件和制造细节而导致的故障。在一些实施例中,监测系统还能够通过从关键路径移除组件来在发生故障之前将权限和实体前摄转移而远离受影响设备。
图2C是多级框图,示出了存储节点150的内容和存储节点150的非易失性固态存储装置152的内容。在一些实施例中,通过网络接口控制器(‘NIC’)202向存储节点150传送数据和从存储节点150传送数据。如上面所讨论的,每个存储节点150具有CPU 156和一个或多个非易失性固态存储装置152。在图2C中向下移动一个层级,每个非易失性固态存储装置152具有相对快速非易失性固态存储器,例如,非易失性随机存取存储器(‘NVRAM’)204和闪存206。在一些实施例中,NVRAM 204可以是不要求编程/擦除周期的组件(DRAM、MRAM、PCM),并且可以是可支持与从存储器读取相比被更经常写入的存储器。在图2C中向下移动另一层级,NVRAM 204在一个实施例中被实现为高速易失性存储器,例如,由能量储备218支援的动态随机存取存储器(DRAM)216。能量储备218提供足够的电力来使DRAM 216保持被供电足够长时间,以便在电源故障的情况下将内容转移到闪存206。在一些实施例中,能量储备218是电容器、超级电容器、电池或其他设备,其提供足够的适当能量供应以使得能够在断电的情况下将DRAM 216的内容转移到稳定存储介质。闪存206被实现为多个闪存管芯222,其可以被称为闪存管芯222的封装或闪存管芯222的阵列。应理解,可以以任意种方式、按每封装单个管芯、每封装多个管芯(即多芯片封装)、在混合封装中、作为印刷电路板或其他衬底上的裸管芯、作为胶囊管芯等来封装闪存管芯222。在所示的实施例中,非易失性固态存储装置152具有控制器212或其他处理器,以及耦合到控制器212的输入输出(I/O)端口210。I/O端口210耦合到闪存存储节点150的CPU 156和/或网络接口控制器202。闪存输入输出(I/O)端口220耦合到闪存管芯222,并且直接存储器存取单元(DMA)214耦合到控制器212、DRAM 216和闪存管芯222。在所示的实施例中,I/O端口210、控制器212、DMA单元214和闪存I/O端口220被实现在可编程逻辑器件(‘PLD’)208(例如,现场可编程门阵列(FPGA))上。在此实施例中,每个闪存管芯222具有被组织为十六kB(千字节)页面224的页面,以及寄存器226,通过该寄存器226可将数据写入到闪存管芯222或者从闪存管芯222读取数据。在另外的实施例中,使用其他类型的固态存储器代替在闪存芯片222内图示的闪存,或者在除了闪存芯片222内图示的闪存之外还使用其他类型的固态存储器。
在如本文所公开的各种实施例中,存储集群161通常可与存储阵列对比。存储节点150是创建存储集群161的合集的一部分。每个存储节点150拥有数据切片和提供该数据所需要的计算。多个存储节点150协作以存储和取回数据。如通常在存储阵列中使用的储存存储器或存储设备较少参与处理和操纵数据。存储阵列中的储存存储器或存储设备接收用于读取、写入或者擦除数据的命令。存储阵列中的储存存储器或存储设备不知道它们被嵌入其中的较大系统,或数据的含义。存储阵列中的储存存储器或存储设备可包括各种类型的储存存储器,例如,RAM、固态驱动器、硬盘驱动器等。本文描述的存储单元152具有同时有效并且为多种目的服务的多个接口。在一些实施例中,存储节点150的一些功能性被转移到存储单元152,从而将存储单元152变换成存储单元152和存储节点150的组合。将(与存储数据有关的)计算放置到存储单元152中使这种计算更靠近数据本身。各种系统实施例具有包括不同能力的存储节点层的层级。相比之下,在存储阵列中,控制器拥有并知道关于控制器在支架或存储设备中管理的所有数据的一切信息。在存储集群161中,如本文所描述的,多个存储单元152和/或存储节点150中的多个控制器以各种方式协作(例如,用于擦除编码、数据分片、元数据通信和冗余、存储容量扩展或收缩、数据恢复等)。
图2D示出使用图2A-C的存储节点150和存储单元152的实施例的存储服务器环境。在此版本中,每个存储单元152在机箱138(参见图2A)中的PCIe(外围组件互连快速)板上具有诸如控制器212(参见图2C)之类的处理器、FPGA(现场可编程门阵列)、闪存206和NVRAM204(其是超级电容器支持的DRAM 216,参见图2B和图2C)。存储单元152可以被实现为包含存储装置的单个板,并且可以是机箱内部的最大可容忍故障域。在一些实施例中,多达两个存储单元152可能发生故障并且设备将在没有数据丢失的情况下继续。
在一些实施例中,物理存储装置基于应用使用被划分成命名区域。NVRAM 204是存储单元152DRAM 216中的连续保留存储器块,并且由NAND闪存来支持。NVRAM 204在逻辑上被划分成作为线轴(spool)被写入两次的多个存储器区域(例如,线轴区域)。NVRAM 204线轴内的空间由每个权限168独立地管理。每个设备向每个权限168提供一定量的存储空间。该权限168进一步管理该空间内的寿命和分配。线轴的示例包括分布式事务或概念。当存储单元152的主电源发生故障时,板载超级电容器提供短持续时间的电力保持。在此保持间隔期间,NVRAM 204的内容被刷新到闪存206。在下一次通电时,从闪存206恢复NVRAM 204的内容。
对于存储单元控制器,逻辑“控制器”的职责分布在包含权限168的刀片中的每一个上。逻辑控制的这种分布在图2D中被示为主机控制器242、中间层控制器244、以及(一个或多个)存储单元控制器246。对控制平面和存储平面的管理被独立地处理,但是各部分可以物理地共址在同一刀片上。每个权限168有效地用作独立控制器。每个权限168提供它自己的数据和元数据结构、它自己的后台工作者,并且维护它自己的生命周期。
图2E是在图2D的存储服务器环境中使用图2A-C的存储节点150和存储单元152的实施例的刀片252硬件框图,示出了控制平面254、计算和存储平面256、258、以及与底层物理资源交互的权限168。控制平面254被分区成许多权限168,其可以使用计算平面256中的计算资源来在任何刀片252上运行。存储平面258被分区成一组设备,其中的每一个设备提供对闪存206和NVRAM 204资源的访问。
在图2E的计算和存储平面256、258中,权限168与底层物理资源(即设备)交互。从权限168的角度来看,其资源在所有物理设备上被条带化。从设备的角度来看,它向所有权限168提供资源,而不管权限在何处运行。每个权限168已分配或者已被分配了存储单元152中的储存存储器的一个或多个分区260,例如,闪存206和NVRAM 204中的分区260。每个权限168使用属于它的那些所分配的分区260,以用于写入或者读取用户数据。权限可与系统的不同量的物理存储装置相关联。例如,一个权限168可以在一个或多个存储单元152中具有比一个或多个其他权限168更大数量的分区260或更大尺寸的分区260。
图2F描绘根据一些实施例的存储集群的刀片252中的弹性软件层。在弹性结构中,弹性软件是对称的,即每个刀片的计算模块270运行图2F中描绘的过程的三个相同的层。存储管理器274执行来自其他刀片252的对存储在本地存储单元152、NVRAM 204和闪存206中的数据和元数据的读取和写入请求。权限168通过向相应的数据或元数据驻留在其存储单元152上的刀片252发出必要的读取和写入来实现客户端请求。端点272解析从交换结构146监督软件接收到的客户端连接请求,将客户端连接请求中继到负责实现的权限168,并且将权限168的响应中继到客户端。对称三层结构使得能实现存储系统的高度并发性。在这些实施例中,弹性有效地且可靠地扩展。此外,弹性实现了独特的扩展技术,其跨所有资源均匀地平衡工作而不管客户端访问模式如何,并且通过消除对于常规分布式锁定通常发生的刀片间协调的大量需要来使并发性最大化。
仍参考图2F,在刀片252的计算模块270中运行的权限168执行实现客户端请求所需的内部操作。弹性的一个特征是权限168是无状态的,即它们将活动数据和元数据缓存在它们自己的刀片252的DRAM中以进行快速访问,但权限将每个更新存储在其在三个单独的刀片252上的NVRAM 204分区中,直到更新已被写入闪存206为止。在一些实施例中,对NVRAM204的所有存储系统写入一式三份地放到三个单独的刀片252上的分区。利用三重镜像NVRAM 204以及通过奇偶和里德-所罗门RAID校验和所保护的持久存储装置,存储系统可幸免于两个刀片252的并发故障,而不会丢失数据、元数据、或对任何一个的访问。
因为权限168是无状态的,它们可在刀片252之间迁移。每个权限168具有唯一标识符。在一些实施例中,NVRAM 204和闪存206分区与权限168的标识符相关联,而不与它们正在上面运行的刀片252相关联。因此,当权限168迁移时,权限168继续从其新位置管理相同的存储分区。当在存储集群的实施例中安装新刀片252时,系统通过以下步骤来自动地重新平衡负载:对新刀片252的存储装置进行分区以供系统的权限168使用,将所选择的权限168迁移到新刀片252,在新刀片252上启动端点272,以及将它们包括在交换结构146的客户端连接分发算法中。
从其新位置,经迁移的权限168将其NVRAM 204分区的内容存留在闪存206上,处理来自其他权限168的读取和写入请求,并且实现端点272引导给它们的客户端请求。类似地,如果刀片252发生故障或者被移除,则系统在系统的剩余刀片252中重新分配其权限168。经重新分配的权限168继续从其新位置执行其原始功能。
图2G描绘了根据一些实施例的存储集群的刀片252中的权限168和存储资源。每个权限168排他性地负责每个刀片252上的闪存206和NVRAM 204的分区。权限168独立于其他权限168来管理其分区的内容和完整性。权限168压缩传入数据并且将它临时保存在其NVRAM 204分区中,然后对数据进行合并、RAID保护,并将数据存留在其闪存206分区中的存储分段中。当权限168将数据写入到闪存206时,存储管理器274执行必要的闪存转换以优化写入性能并且使介质寿命最大化。在后台中,权限168“收集垃圾”,或者回收客户端通过覆写数据而废弃的数据所占据的空间。应理解,因为权限168的分区是不相交的,所以不需要分布式锁定来执行客户端和写入或者执行后台功能。
本文描述的实施例可以利用各种软件、通信、和/或网络协议。此外,可以调整硬件和/或软件的配置以适应各种协议。例如,实施例可以利用有效目录(Active Directory),其是在WINDOWSTM环境中提供认证、目录、策略和其他服务的基于数据库的系统。在这些实施例中,LDAP(轻量级目录访问协议)是用于查询并修改诸如有效目录之类的目录服务提供商中的条目的一个示例应用协议。在一些实施例中,网络锁定管理器(‘NLM’)被用作这样的设施,该设施与网络文件系统(‘NFS’)协作地工作以提供系统V类型的咨询文件并且通过网络记录锁定。服务器消息块(‘SMB’)协议(其一个版本还被称为公共互联网文件系统(‘CIFS’))可以与本文讨论的存储系统集成。SMP用作通常用于提供对文件、打印机、以及串行端口的共享访问以及网络上节点之间的各种通信的应用层网络协议。SMB还提供认证进程间通信机制。AMAZONTM S3(简单存储服务)是由亚马逊网络服务提供的网络服务,并且本文描述的系统可以通过网络服务接口(REST(表述性状态转移)、SOAP(简单对象访问协议)和BitTorrent)来与与Amazon S3相接口。能够REST的(RESTful)API(应用编程接口)分解事务以创建一系列小模块。每个模块解决事务的特定底层部分。利用这些实施例提供的控制或许可(尤其针对对象数据)可以包括对访问控制列表(‘ACL’)的利用。ACL是附接到对象的许可的列表,并且ACL指定哪些用户或系统进程被授予对对象的访问,以及在给定对象上允许什么操作。系统可以利用互联网协议版本6(‘IPv6’)以及IPv4用于通信协议,其为网络上的计算机提供识别和定位系统并且跨互联网路由业务。在联网系统之间路由分组可以包括等价多路径路由(‘ECMP’),其是这样的路由策略,其中,可在多个“最佳路径”上发生到单个目的地的下一跳分组转发,该多个“最佳路径”在路由度量计算中处于最佳位置。多路径路由可以与大多数路由协议相结合地使用,因为它是限于单个路由器的每跳决策。软件可以支持多租户,该多租户是软件应用的单个实例为多个客户服务的架构。每个客户可以被称为租户。在一些实施例中,租户可以被给予定制应用的一些部分的能力,但是可能无法定制应用的代码。实施例可以维护审计日志。审计日志是记录计算系统中的事件的文档。在记录什么资源被访问之外,审计日志条目还通常包括目的地和源地址、时间戳和用户登录信息以便符合各种规定。实施例可以支持各种密钥管理策略,例如,加密密钥轮换。此外,系统可以支持动态根密码或动态地改变密码的一些变体。
图3A阐述了根据本公开的一些实施例的被耦合用于与云服务提供商302进行数据通信的存储系统306的图。尽管不太详细地描绘,但图3A中描绘的存储系统306可以类似于上面参考图1A-1D和图2A-2G所描述的存储系统。在一些实施例中,图3A中描绘的存储系统306可以被体现为:包括不平衡有效/有效控制器的存储系统、包括平衡有效/有效控制器的存储系统、其中少于全部每个控制器的资源被利用以使得每个控制器具有可以用于支持故障转移的储备资源的包括有效/有效控制器的存储系统、包括完全有效/有效控制器的存储系统、包括数据集隔离控制器的存储系统、包括具有前端控制器和后端集成存储控制器的双层架构的存储系统、包括双控制器阵列的扩展集群的存储系统、以及这些实施例的组合。
在图3A描绘的示例中,存储系统306经由数据通信链路304耦合到云服务提供商302。数据通信链路304可以被体现为专用数据通信链路、通过使用诸如广域网(‘WAN’)或局域网(‘LAN’)之类的一个或多个数据通信网络来提供的数据通信通路、或者能够在存储系统306和云服务提供商302之间传输数字信息的某种其他机制。这样的数据通信链路304可以是完全有线的、完全无线的、或有线和无线数据通信通路的某种聚合。在这样的示例中,可以使用一个或多个数据通信协议来经由数据通信链路304在存储系统306和云服务提供商302之间交换数字信息。例如,可以使用手持设备传输协议(‘HDTP’)、超文本传输协议(‘HTTP’)、互联网协议(‘IP’)、实时传输协议(‘RTP’)、传输控制协议(‘TCP’)、用户数据报协议(‘UDP’)、无线应用协议(‘WAP’)或其他协议来经由数据通信链路304在存储系统306与云服务提供商302之间交换数字信息。
图3A中描绘的云服务提供商302可以例如被体现为通过经由数据通信链路304共享计算资源来向云服务提供商302的用户提供服务的系统和计算环境。云服务提供商302可以提供对诸如计算机网络、服务器、存储装置、应用和服务等之类的可配置计算资源的共享池的按需访问。可以用最少管理工作量将可配置资源的共享池快速地供应并释放给云服务提供商302的用户。通常,云服务提供商302的用户不知道被云服务提供商302用来提供服务的实际计算资源。尽管在许多情况下可以经由互联网访问这样的云服务提供商302,但本领域的技术人员将认识到,抽象化对共享资源的使用以通过任何数据通信链路来向用户提供服务的任何系统可以被认为是云服务提供商302。
在图3A中描绘的示例中,云服务提供商302可以被配置为通过实现各种服务模型来向存储系统306以及存储系统306的用户提供各种服务。例如,云服务提供商302可以被配置为通过实现基础设施即服务(‘IaaS’)服务模型来向存储系统306以及存储系统306的用户提供服务,在该IaaS服务模型中,云服务提供商302将诸如虚拟机和其他资源之类的计算基础设施作为服务提供给订户。此外,云服务提供商302可以被配置为通过实现平台即服务(‘PaaS’)服务模型来向存储系统306以及存储系统306的用户提供服务,在该PaaS服务模型中,云服务提供商302向应用开发者提供开发环境。这样的开发环境可以包括例如操作系统、编程语言执行环境、数据库、网络服务器、或可以由应用开发者用来在云平台上开发和运行软件解决方案的其他组件。此外,云服务提供商302可以被配置为通过实现软件即服务(‘SaaS’)服务模型来向存储系统306以及存储系统306的用户提供服务,在该SaaS服务模型中,云服务提供商302向存储系统306以及存储系统306的用户提供应用软件、数据库以及用于运行应用的平台,从而为存储系统306以及存储系统306的用户提供所需的软件并且消除对在本地计算机上安装和运行应用的需要,这可以简化对应用的维护和支持。云服务提供商302可以被进一步配置为通过实现认证即服务(‘AaaS’)服务模型来向存储系统306以及存储系统306的用户提供服务,在该AaaS服务模型中,云服务提供商302提供可用于保证对应用、数据源或其他资源的访问的认证服务。云服务提供商302还可以被配置为通过实现存储即服务的服务模型来向存储系统306以及存储系统306的用户提供服务,在该存储即服务的服务模型中,云服务提供商302提供对其存储基础设施的访问以供存储系统306以及存储系统306的用户来使用。读者将理解的是,云服务提供商302可以被配置为通过实现额外的服务模型来向存储系统306以及存储系统306的用户提供额外的服务,因为上面描述的服务模型仅为了说明目的而被包括,并且决不表示对可以由云服务提供商302提供的服务的限制、或者关于可以由云服务提供商302实现的服务模型的限制。
在图3A中描绘的示例中,云服务提供商302可以被体现为例如私有云、公共云、或私有云和公共云的组合。在云服务提供商302被体现为私有云的实施例中,云服务提供商302可以专用于向单个组织提供服务而不是向多个组织提供服务。在云服务提供商302被体现为公共云的实施例中,云服务提供商302可以向多个组织提供服务。公共云和私有云部署模型可以不同并且可能具有各种优点和缺点。例如,因为公共云部署涉及跨不同的组织共享计算基础设施,所以这样的部署对于具有安全性关注、任务关键工作负载、运行时间要求需求等的组织来说可能不是理想的。虽然私有云部署可解决这些问题中的一些,但是私有云部署可能要求本地员工来管理私有云。在又一些替代实施例中,可以将云服务提供商302体现为具有混合云部署的私有和公共云服务的混合物。
尽管在图3A中未明确地描绘,但读者将理解,附加硬件组件和附加软件组件可能是必要的以促进将云服务递送给存储系统306以及存储系统306的用户。例如,存储系统306可以耦合到(或者甚至包括)云存储网关。这样的云存储网关可以被体现为例如与存储系统306一起位于本地的基于硬件或基于软件的应用。这样的云存储网关可以用作正在存储阵列306上运行的本地应用与被存储阵列306利用的远程基于云的存储装置之间的桥接器。通过使用云存储网关,组织可以将主iSCSI或NAS移动到云服务提供商302,从而使得组织能够节省其本地存储系统上的空间。这样的云存储网关可以被配置为模拟磁盘阵列、基于块的设备、文件服务器、或可将SCSI命令、文件服务器命令或其他适当的命令转换成促进与云服务提供商302进行通信的REST空间协议的其他存储系统。
为了使得存储系统306以及存储系统306的用户能够利用由云服务提供商302提供的服务,云迁移进程可以发生,在所述云迁移进程期间,来自组织的本地系统(或甚至来自另一云环境)的数据、应用或其他元素被移动到云服务提供商302。为了将数据、应用或其他元素成功地迁移到云服务提供商302的环境,可以利用诸如云迁移工具之类的中间件来桥接云服务提供商302的环境与组织的环境之间的间隙。这样的云迁移工具还可以被配置为解决与将大量数据迁移到云服务提供商302相关联的潜在高网络成本和长转移时间,以及解决与通过数据通信网络到云服务提供商302的敏感数据相关联的安全性问题。为了进一步使得存储系统306以及存储系统306的用户能够利用由云服务提供商302提供的服务,还可以使用云编配器(orchestrator)来布置和协调自动化任务以寻求创建经整理的进程或工作流程。这样的云编配器可以执行诸如配置各种组件(无论这些组件是云组件还是本地部署的组件)以及管理这样的组件之间的互连之类的任务。云编配器可简化组件间通信和连接以确保链路被正确地配置和维护。
在图3A中描绘的示例中,并且如上面简要地描述的,云服务提供商302可以被配置为通过使用SaaS服务模型来向存储系统306以及存储系统306的用户提供服务,在该SaaS服务模型中,云服务提供商302向存储系统306以及存储系统306的用户提供应用软件、数据库以及用于运行应用的平台,从而为存储系统306以及存储系统306的用户提供所需的软件并且消除对在本地计算机上安装和运行应用的需要,这可以简化应用的维护和支持。根据本公开的各种实施例,这样的应用可以采取许多形式。例如,云服务提供商302可以被配置为向存储系统306以及存储系统306的用户提供对数据分析应用的访问。这样的数据分析应用可以被配置为例如接收存储系统306通知的遥测数据。这样的遥测数据可以描述存储系统306的各种工作特性并且可以被分析,例如,以确定存储系统306的健康状况、识别正在存储系统306上执行的工作负载、预测存储系统306何时将耗尽各种资源、推荐配置变化、硬件或软件升级、工作流程迁移、或可以改善存储系统306的操作的其他动作。
云服务提供商302还可以被配置为向存储系统306以及存储系统306的用户提供对虚拟化计算环境的访问。这样的虚拟化计算环境可以被体现为例如虚拟机或其他虚拟化计算机硬件平台、虚拟存储设备、虚拟化计算机网络资源等。这样的虚拟化环境的示例可包括被创建来模拟实际计算机的虚拟机、使逻辑桌面与物理机器分开的虚拟化桌面环境、允许统一访问不同类型的具体文件系统的虚拟化文件系统等。
为了进一步说明,图3B阐述了根据本公开的一些实施例的存储系统306的图。尽管不太详细地描绘,但图3B中描绘的存储系统306可以类似于上面参考图1A-1D和图2A-2G所描述的存储系统,因为存储系统可以包括许多上面描述的组件。
图3B中描绘的存储系统306可以包括存储资源308,其可以以许多形式来体现。例如,在一些实施例中,存储资源308可包括纳米RAM或利用沉积在衬底上的碳纳米管的另一形式的非易失性随机存取存储器。在一些实施例中,存储资源308可以与可堆叠交叉网格化数据存取阵列相结合地包括3D交叉点非易失性存储器,其中位存储装置基于体电阻的变化。在一些实施例中,存储资源308可以包括闪存,包括单级单元(‘SLC’)NAND闪存、多级单元(‘MLC’)NAND闪存、三级单元(‘TLC’)NAND闪存、四级单元(‘QLC’)NAND闪存等。在一些实施例中,存储资源308可以包括非易失性磁阻随机存取存储器(‘MRAM’),包括自旋转移扭矩(‘STT’)MRAM,其中通过使用磁存储元件来存储数据。在一些实施例中,示例存储资源308可以包括非易失性相变存储器(‘PCM’),其可以具有在单个单元中保持多个位的能力,因为单元可实现许多不同的中间状态。在一些实施例中,存储资源308可以包括允许存储和取回光子量子信息的量子存储器。在一些实施例中,示例存储资源308可以包括电阻式随机存取存储器(‘ReRAM’),其中通过改变跨电介质固态材料的电阻来存储数据。在一些实施例中,存储资源308可以包括存储类存储器(‘SCM’),其中可以使用亚光刻图案化技术、每单元多个位、多个设备层等的某种组合来以高密度制造固态非易失性存储器。读者将理解的是,上面描述的存储系统可以利用其他形式的计算机存储器和存储设备,包括DRAM、SRAM、EEPROM、通用存储器等。可以以各种形状因子来体现图3A中描绘的存储资源308,包括但不限于双列直插存储器模块(‘DIMM’)、非易失性双列直插存储器模块(‘NVDFMM’)、M.2、U.2等。
图3B中描绘的示例存储系统306可以实现各种存储架构。例如,根据本公开的一些实施例的存储系统可以利用块存储装置,其中数据被存储在块中,并且每个块实质上作为单独的硬盘驱动器。根据本公开的一些实施例的存储系统可以利用对象存储装置,其中数据作为对象被管理。每个对象可以包括数据本身、可变量的元数据和全局唯一标识符,其中可在多个级别(例如,设备级别、系统级别、接口级别)下实现对象存储装置。根据本公开的一些实施例的存储系统利用文件存储装置,其中数据被存储在层级结构中。这样的数据可以被保存在文件和文件夹中,并被呈现给存储它的系统和以相同格式取回它的系统两者。
图3B中描绘的示例存储系统306可以被体现为这样的存储系统,其中可通过使用纵向扩展模型来添加额外的存储资源、可通过使用横向扩展模型或者通过其某种组合来添加额外的存储资源。在纵向扩展模型中,可以通过添加额外的存储设备来添加额外的存储装置。然而,在横向扩展模型中,可以将额外的存储节点添加到存储节点的集群,其中这样的存储节点可包括额外的处理资源、额外的联网资源等。
图3B中描绘的存储系统306还包括通信资源310,其可用于促进存储系统306内的组件之间的数据通信,以及存储系统306与在存储系统306外部的计算设备之间的数据通信。通信资源310可以被配置为利用各种不同的协议和数据通信结构来促进存储系统内的组件以及在存储系统外部的计算设备之间的数据通信。例如,通信资源310可包括光纤通道(‘FC’)技术,例如,可通过FC网络来传输SCSI命令的FC结构和FC协议。通信资源310还可包括以太网FC(‘FCoE’)技术,FC帧通过FCoE技术被封装并且通过以太网网络来发送。通信资源310还可包括无限带宽(‘IB’)技术,其中利用交换结构拓扑来促进信道适配器之间的传输。通信资源310还可包括NVM快速(‘NVMe’)技术和结构上NVMe(‘NVMeoF’)技术,通过这些技术可以访问经由PCI快速(‘PCIe’)总线附接的非易失性存储介质。通信资源310还可包括用于利用串行附接SCSI(‘SAS’)来访问存储系统306内的存储资源308的机制、用于将存储系统306内的存储资源308连接到存储系统306内的主机总线适配器的串行ATA(‘SATA’)总线接口、用于提供对存储系统306内的存储资源308的块级访问的互联网小型计算机系统接口(‘iSCSI’)技术、以及可用于促进存储系统306内的组件之间的数据通信以及存储系统306与在存储系统306外部的计算设备之间的数据通信的其他通信资源。
图3B中描绘的存储系统306还包括处理资源312,其可用于在存储系统306内执行计算机程序指令并执行其他计算任务。处理资源312可以包括为了某个特定目的而定制的一个或多个专用集成电路(‘ASIC’)以及一个或多个中央处理单元(‘CPU’)。处理资源312还可以包括一个或多个数字信号处理器(‘DSP’)、一个或多个现场可编程门阵列(‘FPGA’)、一个或多个片上系统(‘SoC’)、或其他形式的处理资源312。存储系统306可以利用存储资源312来执行各种任务,包括但不限于支持对将在下面更详细地描述的软件资源314的执行。
图3B中描绘的存储系统306还包括软件资源314,所述软件资源314在由存储系统306内的处理资源312执行时可以执行各种任务。软件资源314可以包括例如计算机程序指令的一个或多个模块,其在由存储系统306内的处理资源312执行时可用于执行各种数据保护技术以保存被存储在存储系统内的数据的完整性。读者将理解,可以例如通过在存储系统内的计算机硬件上执行的系统软件、通过云服务提供商、或者以其他方式执行这样的数据保护技术。这样的数据保护技术可包括例如:数据存档技术,其使得不再主动地使用的数据被移动到单独的存储设备或单独的存储系统以便于长期保持;数据备份技术,通过所述数据备份技术可以复制并在不同位置中存储被存储在存储系统中的数据,以在存储系统发生设备故障或某种其他形式的灾难时避免数据丢失;数据复制技术,通过所述数据复制技术将存储在存储系统中的数据复制到另一存储系统,使得可以经由多个存储系统访问数据;数据快照技术,通过所述数据快照技术在各个时间点捕获存储系统内的数据的状态;数据和数据库克隆技术,通过所述数据和数据库克隆技术可以创建数据和数据库的重复副本;以及其他数据保护技术。通过使用这样的数据保护技术,可以满足业务连续性和灾难恢复目标,因为存储系统的故障可能不会导致存储在存储系统中的数据的丢失。
软件资源314还可以包括可用于实现软件定义存储装置(‘SDS’)的软件。在这样的示例中,软件资源314可以包括计算机程序指令的一个或多个模块,所述模块在被执行时可用于独立于底层硬件的对数据存储的基于策略的供应和管理。这样的软件资源314可用于实现存储虚拟化以使存储硬件与管理存储硬件的软件分开。
软件资源314还可以包括可用于促进和优化针对存储系统306中的存储资源308的I/O操作用的软件。例如,软件资源314可以包括执行诸如例如数据压缩、重复数据删除之类的各种数据减少技术的软件模块。软件资源314可以包括智能地将I/O操作分组在一起以促进对底层存储资源308的更好使用的软件模块、执行数据迁移操作以从存储系统内迁移的软件模块、以及执行其他功能的软件模块。这样的软件资源314可以被体现为一个或多个软件容器或者以许多其他方式来实现。
读者将理解,可以将图3B中描绘的各种组件作为融合基础设施而分组到一个或多个优化的计算封装中。这样的融合基础设施可以包括可被多个应用共享并且使用策略驱动进程来以集体方式管理的计算机、存储装置和联网资源的池。这样的融合基础设施可以使存储系统306内的各种组件之间的兼容性问题最小化,同时还降低与存储系统306的建立和操作相关联的各种成本。可以用融合基础设施参考架构、独立应用、软件驱动的超融合方法(例如,超融合基础设施)或者其他方式来实现这样的融合基础设施。
读者将理解,图3B中描绘的存储系统306可用于支持各种类型的软件应用。例如,存储系统306可用于通过向以下应用提供存储资源来支持这些应用:人工智能(‘AI’)应用、数据库应用、DevOps项目、电子设计自动化工具、事件驱动的软件应用、高性能计算应用、仿真应用、高速数据捕获和分析应用、机器学习应用、媒体制作应用、媒体服务应用、图片存档和通信系统(‘PACS’)应用、软件开发应用、虚拟现实应用、增强现实应用、以及许多其他类型的应用。
上述存储系统可以操作以支持各种的应用。考虑到存储系统包括计算资源、存储资源和各种其他资源的事实,该存储系统可以非常适合于支持资源密集型的应用,例如,AI应用。这样的AI应用可以使设备能够感知其环境,并采取使某些目标成功的机会最大化的行动。这样的AI应用的示例可以包括IBM Watson、Microsoft Oxford、Google DeepMind、百度Minwa等。上述存储系统也可以非常适合于支持其他类型的资源密集型的应用,例如,机器学习应用。机器学习应用可以执行各种类型的数据分析以自动化分析模型构建。使用从数据中迭代地学习的算法,机器学习应用可使计算机无需进行显式编程即可学习。
除了已经描述的资源之外,上述存储系统还可以包括图形处理单元(‘GPU’),其有时也称为视觉处理单元(‘VPU’)。这样的GPU可以体现为专用电子电路,该专用电子电路快速操纵和更改存储器以加速在旨在输出到显示设备的帧缓冲器中的创建图像。这样的GPU可以被包括在作为上述存储系统的一部分的任何计算设备内,包括作为存储系统的许多可单独扩展组件中的一个,其中该存储系统的可单独扩展组件的其他示例可以包括存储组件、存储器组件、计算组件(例如,CPU、FPGA、ASIC)、联网组件、软件组件等。除了GPU之外,上述存储系统还可以包括神经网络处理器(‘NNP’),其用于神经网络处理的各个方面。这样的NNP可以代替GPU来使用(或在GPU之外附加地使用),并且可以独立扩展。
如上所述,本文所述的存储系统可以被配置为支持人工智能应用、机器学习应用、大数据分析应用、以及许多其他类型的应用。这类应用的快速增长是由三种技术推动的:深度学习(DL)、GPU处理器和大数据。深度学习是利用受人脑启发的大规模并行神经网络的计算模型。替代专家手工制作软件,深度学习模型通过从大量示例中学习来编写自己的软件。GPU是具有数千个内核的现代处理器,非常适合运行宽松地代表人脑并行特性的算法。
深度神经网络的进步引发了新一波算法和工具,供数据科学家使用人工智能(AI)来挖掘其数据。借助改进的算法、更大的数据集和各种框架(包括用于跨一系列任务的机器学习的开源软件库),数据科学家正在处理新用例,如自动驾驶车辆、自然语言处理和理解、计算机视觉、机器推理、强AI等。此类技术的应用可包括:机器和车辆物体检测、识别和躲避;视觉识别、分类和标记;算法性金融交易策略性能管理;同时定位和映射;高价值机械的预测性维护;防范网络安全威胁、专业知识自动化;图像识别和分类;问题回答;机器人技术;文本分析(提取、分类)以及文本生成和翻译;以及许多其他应用。AI技术的应用已广泛出现在各种产品中,包括例如Amazon Echo的语音识别技术(允许用户与自己的机器对话)、Google TranslateTM(允许基于机器的语言翻译)、Spotify的Discover Weekly(根据用户的使用情况和流量分析提供关于用户可能喜欢的新歌曲和艺术家的推荐)、Quill的文本生成产品(获取结构化数据并将其转换为叙述性故事)、Chatbot(以对话格式提供实时的、特定于上下文的问题解答)等。此外,AI可能会影响广泛的行业和部门。例如,AI解决方案可用于医疗保健以记录临床笔记、患者档案、研究数据和其他输入,以生成可供医生探索的潜在治疗方案。同样,零售商可以使用AI解决方案基于个人的行为、个人资料数据或其他数据的数字足迹来个性化消费者推荐。
数据是现代AI和深度学习算法的要点。在开始训练之前,必须解决的一个问题是围绕收集对于训练精确的AI模型至关重要的标记数据。可能需要全面大规模AI部署以连续地收集、清理、转换、标记和存储大量数据。添加额外的高质量数据点将直接转化为更精确的模型和更好的见解。数据样本可经历一系列处理步骤,包括但不限于:1)将数据从外部源提取到训练系统中,并以原始形式存储数据,2)以便于训练的格式清理和转换数据,包括将数据样本链接到适当的标签,3)探索参数和模型,使用较小数据集进行快速测试,然后迭代以收敛到最有希望的模型以推送到生产集群,4)执行训练阶段以选择随机批次的输入数据,包括新样本和旧样本二者,并将它们馈送到生产GPU服务器以进行计算,以更新模型参数,以及5)进行评估,包括使用训练中未使用的数据的保留部分以评估保留数据上的模型精确性。此生命周期可适用于任何类型的并行化机器学习,而不仅仅是神经网络或深度学习。例如,标准的机器学习框架可依赖于CPU而不是GPU,但是数据提取和训练工作流程可以是相同的。读者将理解,单个共享存储数据中心在整个生命周期中创建协调点,其中在提取、预处理和训练阶段中无需额外的数据副本。所提取的数据很少仅用于一个目的,并且共享存储装置给予训练多个不同的模型或将传统分析应用于数据的灵活性。
读者将理解,AI数据流水线中的每个阶段可能对数据中心(例如,存储系统或存储系统的集合)具有不同的要求。横向扩展存储系统必须为所有类型的访问类型和模式(从较小的充满元数据的文件到大型文件、从随机访问模式到顺序访问模式、以及从低并发性到高并发性)提供卓越的性能。由于系统可以服务于非结构化工作负载,因此上述存储系统可以用作理想AI数据中心。在第一阶段,理想情况下,数据被提取并存储到后续阶段将使用的同一数据中心上,以避免过多的数据复制。接下来的两个步骤可以在可选地包含GPU的标准计算服务器上完成,然后在第四和最后一个阶段中,在功能强大的GPU加速服务器上运行完整的训练生产作业。通常,在同一数据集上有生产流水线以及实验流水线进行操作。此外,GPU加速服务器可以独立地用于不同的模型,或者结合在一起以在一个更大的模型上进行训练,甚至跨多个系统以进行分布式训练。如果共享存储层较慢,则必须在每个阶段将数据复制到本地存储装置中,使得时间浪费在将数据暂存到不同服务器上。用于AI训练流水线的理想数据中心提供与本地存储在服务器节点上的数据类似的性能,同时还具有使所有流水线阶段能够同时运行的简单性和性能。
数据科学家致力于通过以下多种方法来提高经训练的模型的实用性:更多的数据、更好的数据、更智能的训练、以及更深的模型。在许多情况下,会有数据科学家团队共享相同的数据集,并且并行工作以产生新的和改善的训练模型。通常,会有数据科学家团队在这些阶段中同时处理相同的共享数据集。数据处理、实验和全面训练层的多个并发工作负载满足了存储层上的多种访问模式的需求。换句话说,存储装置不能仅满足大型文件读取,而且必须解决大、小文件读取和写入的混合。最后,随着多个数据科学家探索数据集和模型,以原始格式存储数据以便为每个用户提供以独特的方式转换、清理和使用数据的灵活性可能是至关重要的。上述存储系统可以为数据集提供自然的共享存储位置,并具有数据保护冗余(例如,通过使用RAID6)以及作为用于多个开发人员和多个实验的公共访问点所必需的性能。使用上述存储系统可以避免为本地工作而仔细复制数据子集的需要,从而节省了工程时间和GPU加速服务器使用时间。随着原始数据集和所需转换的不断更新和变化,这些副本将成为持续的并且不断增长的重负。
读者将理解,深度学习取得成功的根本原因是通过更大数据集大小而持续改进模型。相反地,经典的机器学习算法(如逻辑回归)在较小数据集大小处就停止了提高精确性。这样,计算资源和存储资源的分离还可以允许每个层的独立扩展,从而避免了同时管理两者时固有的许多复杂性。随着数据集大小增长或考虑新数据集,横向扩展存储系统必须能够容易地扩展。类似地,如果需要更多的并行训练,则可以添加额外的GPU或其他计算资源,而无需担心其内部存储。此外,由于存储系统提供的随机读取带宽、存储系统以高速率随机读取较小文件(50KB)的能力(意味着不需要额外的工作量来聚合单独的数据点以生成较大的、易于存储的文件)、存储系统扩展容量和性能的能力(随着数据集的增长或吞吐量需求的增长)、存储系统支持文件或对象的能力、存储系统针对大文件或小文件调整性能的能力(即无需用户配置文件系统)、存储系统即使在生产模型训练期间也支持硬件和软件的无中断升级的能力、以及多个其他原因,上述存储系统可以使得构建、操作和扩展AI系统更加容易。
由于许多类型的输入(包括文本、音频或图像)将被本机存储为小文件,因此存储层的小文件性能可能是至关重要的。如果存储层不能很好地处理小文件,则将需要额外的步骤来将样本预处理并分组为较大文件。在旋转磁盘上构建的、依赖SSD作为缓存层的存储装置可能无法达到所需的性能。由于使用随机输入批次进行训练会生成更精确的模型,因此整个数据集必须是以完整性能可访问的。SSD缓存仅为数据的较小子集提供高性能,并且在隐藏旋转驱动器的延迟方面将无效。
尽管前面的段落讨论了深度学习应用,但读者将理解,本文所述的存储系统也可以是分布式深度学习(‘DDL’)平台的一部分,以支持DDL算法的执行。分布式深度学习可用于在GPU(或其他形式的加速器或计算机程序指令执行器)上通过分布式计算来显著加速深度学习,从而可以实现并行性。另外,训练机器学习和深度学习模型(例如,完全训练的机器学习模型)的输出可用于多种目的,并与其他工具结合使用。例如,经训练的机器学习模型可以与Core ML之类的工具结合使用,以将各种机器学习模型类型集成到应用中。实际上,经训练的模型可以通过Core ML转换器工具运行,并被插入可以部署在兼容设备上的自定义应用中。上述存储系统也可以与其他技术配对,例如,TensorFlow,其是用于跨一系列任务的数据流编程的开源软件库,该一系列任务可用于诸如神经网络之类的机器学习应用,以促进此类机器学习模型、应用等的开发。
上述存储系统也可以在神经形态计算环境中使用。神经形态计算是模仿脑细胞的一种计算形式。为了支持神经形态计算,互接“神经元”架构用低功率信号代替传统的计算模型,该信号直接在神经元之间行进以实现更高效的计算。神经形态计算可以利用包含电子模拟电路的超大规模集成(VLSI)系统(用于模仿神经系统中存在的神经生物学架构),以及模拟、数字、混合模式模拟/数字VLSI和实现用于感知、运动控制或多传感器集成的神经系统模型的软件系统。
读者将理解,上述存储系统可以被配置为支持(在多种数据类型中)区块链的存储。这样的区块链可以被体现为不断增长的记录列表(称为区块),这些记录列表使用加密进行链接和保护。区块链中的每个区块都可以包含散列指针(作为指向前一区块的链接)、时间戳、事务数据等。区块链可以被设计为对数据修改具有抵抗性,并且可以用作开放的、分布式的分类账,其可以以可验证的和永久的方式有效地记录双方之间的事务。这使得区块链潜在地适合于记录事件、病历和其他记录管理活动,例如,身份管理、事务处理等。除了支持对区块链技术的存储和使用之外,上述存储系统还可以支持对衍生项目的存储和使用,例如,开源区块链和作为IBMTMHyperledger项目一部分的相关工具、允许一定数量的可信方访问区块链的许可区块链、使开发人员能够构建自己的分布式分类帐项目的区块链产品等。读者将理解,区块链技术可能会影响广泛的行业和领域。例如,区块链技术可以在房地产交易中用作基于区块链的合同,其使用可以消除对第三方的需求,并在满足条件时采取自执行措施。同样,可以通过将个人的健康历史记录汇总并放置在区块链分类账上来创建通用健康记录,以供任何医疗保健提供者或许可医疗保健提供者进行访问和更新。
读者将进一步理解,在一些实施例中,上述存储系统可以与其他资源配对以支持上述应用。例如,一个基础设施可以包括服务器和工作站形式的主计算,其专用于使用图形处理单元上的通用计算(‘GPGPU’)来加速深度学习应用,这些应用互连到计算引擎中以训练深度神经网络的参数。每个系统可具有以太网外部连接、无限带宽外部连接、某种其他形式的外部连接、或其某种组合。在这样的示例中,可以将GPU分组以进行单次大型训练,也可以将其独立用于训练多个模型。基础设施还可以包括诸如上述存储系统之类的存储系统,以提供例如横向扩展全闪存文件或对象存储,通过该存储可以通过高性能协议(例如,NFS、S3等)访问数据。该基础设施还可以包括例如冗余的架顶式以太网交换机,其通过MLAG端口通道中的端口连接到存储装置和计算以实现冗余。该基础设施还可以包括白盒服务器形式的其他计算(可选地带有GPU),其用于数据提取、预处理和模型调试。读者将理解,额外的基础设施也是可能的。
读者将理解,相对于可能包括例如部署在服务器节点中的分布式直接附接存储装置(DDAS)解决方案的其他系统,上述系统可更适合于上述应用。这样的DDAS解决方案可以构建用于处理较大的、顺序性较低的访问,但是处理较小的随机访问的能力较低。读者将进一步理解,上述存储系统可用于为上述应用提供平台,该平台优选地用于利用基于云的资源作为可包括在本地的(on-site)或位于内部的(in-house)基础设施中的存储系统,该基础设施更安全、更受本地和内部管理、在功能集和性能上更强健,或者该平台以其他方式优选地用于利用基于云的资源作为支持上述应用的平台的一部分。例如,在诸如IBM Watson之类的平台上构建的服务可能会要求企业将个人用户信息(例如,金融交易信息或可识别患者记录)分发给其他权限。因此,出于各种技术原因以及各种商业原因,与由诸如上述存储系统之类的存储系统支持的内部管理和提供的AI即服务相比,基于云提供AI即服务可能不那么理想。
读者将理解,上述存储系统(单独地或与其他计算机器协作)可以被配置为支持其他AI相关工具。例如,存储系统可以利用诸如ONXX之类的工具、或使得转换以不同AI框架编写的模型更容易的其他开放式神经网络交换格式。同样地,存储系统可以被配置为支持诸如Amazon Gluon之类的工具,其允许开发人员原型化、构建和训练深度学习模型。实际上,上述存储系统可能是更大平台(例如,IBMTMCloud Private for Data)的一部分,该平台包括集成数据科学、数据工程和应用构建服务。这样的平台可以无缝地收集、组织、保护和分析整个企业中的数据,并通过单个解决方案来简化混合数据管理、统一数据治理和集成、数据科学和业务分析。
读者将进一步理解,上述存储系统也可以被部署为边缘解决方案。这样的边缘解决方案可以用于通过在数据源附近的网络边缘执行数据处理来优化云计算系统。边缘计算可以将应用、数据和计算能力(即服务)从集中点推向网络的逻辑极限。通过使用诸如上述存储系统之类的边缘解决方案,可以使用由这样的存储系统提供的计算资源来执行计算任务,可以使用存储系统的存储资源来存储数据,并且可以通过使用存储系统的各种资源(包括网络资源)来访问基于云的服务。通过根据边缘解决方案执行计算任务、根据边缘解决方案存储数据、以及一般地使用边缘解决方案,可以避免消耗昂贵的基于云的资源,并且实际上,可以相对于对基于云的资源的较重依赖经历性能提升。尽管许多任务可以受益于利用边缘解决方案,但某些特定使用可能特别适合在此类环境中进行部署。例如,如无人机、自动驾驶汽车、机器人等设备可能需要非常快速的处理,上述处理实际上如此之快以至于将数据发送到云环境并返回以接收数据处理支持可能过慢。同样地,通过使用各种数据生成传感器来生成大量信息的如机车和燃气轮机之类的机器,也可以从边缘解决方案的快速数据处理能力中受益。作为额外的示例,一些IoT设备(例如,连接的摄像机)可能不适合使用基于云的资源,因为将数据发送到云可能是不切实际的(不仅从隐私角度、安全角度或财务角度来看),仅仅因为涉及的数据量很大。这样,依赖于数据处理、存储或通信的许多任务可能更适合包括诸如上述存储系统之类的边缘解决方案的平台。
考虑仓库、配送中心或类似地点中的库存管理的特定示例。大型库存、仓储、运输、订单履行、制造或其他操作在库存架子上具有大量库存,以及产生大量数据流水的高分辨率数码相机。所有这些数据都可以被带入图像处理系统,该系统可以将数据量减少为少量数据流水。所有小数据都可以在本地存储在存储装置中。设施边缘的本地存储装置可以耦合到云,以进行外部报告、实时控制和云存储。可以使用图像处理的结果来执行库存管理,以使库存可以在货架上跟踪并重新进货、移动、运输、使用新产品进行修改、或删除已停产/过时的产品等。上述场景是上述可配置处理和存储系统的实施例的主要候选者。仅计算刀片和适合于图像处理的卸载刀片的组合(可能具有在卸载FPGA或(一个或多个)卸载定制刀片上的深度学习)可以接收来自所有数码相机的大量数据流水,并产生小数据流水。然后,所有小数据都可以由存储节点存储,并以最好地处理数据流的存储刀片类型组合利用存储单元进行操作。这是存储以及功能加速和集成的示例。取决于与云的外部通信需求以及云中的外部处理,并取决于网络连接和云资源的可靠性,可以调整系统的大小以便以突发性工作负载和可变电导率可靠性进行存储和计算管理。此外,取决于其他库存管理方面,可以将系统配置为在混合边缘/云环境中进行调度和资源管理。
上述存储系统可以单独使用,或者可以与其他计算资源结合使用,作为组合计算资源、存储资源、联网资源、云技术和网络虚拟化技术等的网络边缘平台。作为网络的一部分,边缘可能具有与其他网络设施类似的特性,从客户驻地和回程聚合设施到存在点(PoP)和区域数据中心。读者将理解,网络工作负载(例如,虚拟网络功能(VNF)等)将驻留在网络边缘平台上。通过容器和虚拟机的组合来实现,网络边缘平台可能依赖不再与数据处理资源在地理位置上共址的控制器和调度程序。作为微服务的功能可以划分为控制平面、用户和数据平面、或甚至是状态机,从而允许应用独立的优化和缩放技术。可以通过增加的加速器(驻留在服务器平台(如FPGA和Smart NIC)中的加速器)以及通过支持SDN的商业硅和可编程ASIC来实现这类用户和数据平面。
上述存储系统也可以进行优化以用于大数据分析。大数据分析通常被描述为检查大型且多样的数据集,以发现隐藏模式、未知相关性、市场趋势、客户偏好、以及可以帮助组织做出更明智的业务决策的其他有用的信息的过程。大数据分析应用使数据科学家、预测建模师、统计学家和其他分析专业人员能够分析不断增长的结构化交易数据,以及常规商业智能(BI)和分析程序经常未开发的其他形式的数据。作为该过程的一部分,半结构化和非结构化数据(例如,互联网点主流数据、网络服务器日志、社交媒体内容、来自客户电子邮件和调查响应的文本、移动电话呼叫详细记录、IoT传感器数据和其他数据)可以转换为结构化形式。大数据分析是高级分析的一种形式,其涉及复杂的应用,该复杂的应用包括诸如预测模型、统计算法以及由高性能分析系统支持的假设分析之类的要素。
上述存储系统还可以支持(包括实现为系统接口)响应于人类语音而执行任务的应用。例如,存储系统可以支持执行智能个人助理应用,例如,Amazon Alexa、Apple Siri、Google Voice、Samsung Bixby、Microsoft Cortana等。尽管在前一句中描述的示例使用语音作为输入,但上述存储系统也可以支持聊天机器人、说话机器人、闲聊机器人、人工对话实体、或被配置为通过听觉或文本方法进行对话的其他应用。同样地,存储系统可以实际执行这样的应用,以使得诸如系统管理员之类的用户能够通过语音与存储系统进行交互。这样的应用通常能够进行语音交互、音乐播放、制作待办事项列表、设置警报、流式播客、播放有声读物、以及提供天气、交通和其他实时信息,例如,新闻,但在根据本公开的实施例中,这些应用可以用作对各种系统管理操作的接口。
上述存储系统还可以实现用于实现自驱动存储装置的愿景的AI平台。这样的AI平台可以被配置为通过收集和分析大量存储系统遥测数据点来实现全球预测智能,以实现轻松的管理、分析和支持。事实上,这样的存储系统可以预测容量和性能二者,并生成关于工作负载部署、交互和优化的智能建议。这样的AI平台可以被配置为针对问题指纹库扫描所有传入存储系统遥测数据,以在其影响客户环境之前实时预测和解决事件,并捕获用于预测性能负载的数百个与性能相关的变量。
上述存储系统可以支持序列化或同时执行人工智能应用、机器学习应用、数据分析应用、数据转换、以及可以共同构成AI阶梯的其他任务。可以通过组合这样的元素以形成完整的数据科学流水线来高效地形成这种AI阶梯,其中AI阶梯的元素之间存在依赖性。例如,AI可能需要进行某种形式的机器学习,机器学习可能需要进行某种形式的分析,分析可能需要进行某种形式的数据和信息架构等。这样,每个元素都可以视为AI阶梯中的梯级,其可以共同构成完整而复杂的AI解决方案。
上述存储系统也可以单独地或与其他计算环境结合地用于实现AI无处不在的体验,其中AI广泛且扩张地遍及商业和生活的各方面。例如,AI可以在实现以下方面中扮演重要角色:深度学习解决方案、深度强化学习解决方案、人工智能通用解决方案、自动驾驶车辆、认知计算解决方案、商用UAV或无人机、会话用户界面、企业分类法、本体管理解决方案、机器学习解决方案、智能尘埃、智能机器人、智能工作场所等。上述存储系统也可以单独地或与其他计算环境结合地用于实现广泛的透明沉浸式体验,其中技术可以在人、企业和事物之间引入透明度。这样的透明沉浸式体验可以实现为增强现实技术、联网家庭、虚拟现实技术、脑-计算机接口、人类增强技术、纳米管电子器件、体积显示器、4D打印技术等。上述存储系统也可以单独地或与其他计算环境结合地用于支持各种数字平台。此类数字平台可以包括例如5G无线系统和平台、数字孪生平台、边缘计算平台、IoT平台、量子计算平台、无服务器PaaS、软件定义的安全性、神经形态计算平台等。
上述存储系统也可以是多云环境的一部分,其中,多个云计算和存储服务被部署在单个异构架构中。为了促进这种多云环境的操作,可以部署DevOps工具以实现跨云的编排。同样,可以部署持续开发和持续集成工具来标准化围绕持续集成和交付、新功能推出和供应云工作负载的流程。通过对这些过程进行标准化,可以实现针对每个工作负载利用最佳提供商的多云策略。此外,可以部署应用监测和可见性工具以跨不同的云移动应用工作负载、识别性能问题、以及执行其他任务。此外,可以部署安全性和合规性工具以确保符合安全性要求、政府法规等。这样的多云环境还可包括用于应用交付和智能工作负载管理的工具以确保高效的应用交付并辅助跨分布式和异构基础设施引导工作负载,以及简化对云中的封装和自定义应用的部署和维护并实现云间可移植性的工具。多云环境可以类似地包括用于数据可移植性的工具。
上述存储系统可以用作启用对加密锚的使用的平台的一部分,该加密锚可以用于验证产品的来源和内容,以确保其与和产品相关联的区块链记录匹配。这样的加密锚可以采取许多形式,包括例如作为食用墨水、作为移动传感器、作为微芯片等。类似地,作为用于保护存储在存储系统上的数据的工具套件的一部分,上述存储系统可以实现各种加密技术和方案,包括晶格密码术。晶格密码术可以涉及在结构本身或在安全证明中构造涉及晶格的密码基元。与容易受到量子计算机攻击的诸如RSA、Diffie-Hellman或Elliptic-Curve密码系统之类的公钥方案不同,一些基于晶格的结构似乎可以抵抗经典计算机和量子计算机二者的攻击。
量子计算机是执行量子计算的设备。量子计算是使用量子力学现象(例如,叠加和纠缠)进行的计算。量子计算机与基于晶体管的传统计算机不同,因为这种传统计算机要求将数据编码为二进制数字(位),每个数字始终处于两个确定状态之一(0或1)。与传统计算机相反,量子计算机使用量子位,该位可以处于状态的叠加。量子计算机维护量子位序列,其中,单个量子位可以表示一、零、或这两个量子位状态的任何量子叠加。一对量子位可以处于4个状态的任何量子叠加,并且三个量子位可以处于8个状态的任何叠加。具有n个量子位的量子计算机通常可以同时处于多达2n个不同状态的任意叠加,而传统计算机在任何时候只能处于这些状态之一。量子图灵机是这种计算机的理论模型。
为了进一步解释,图4阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的示例方法的流程图。尽管不太详细地描绘,但图4中描绘的存储系统(406)可以类似于以上参考图1A-1D、图2A-2G、图3A-3B、或其任何组合所描述的存储系统。实际上,图4中描述的存储系统可以包括与上述存储系统相比相同、更少、额外的组件。
图4描绘的存储系统(406)被示为包括处理资源(416、418、420)形式的计算资源。处理资源(416、418、420)可以体现为例如物理资源(例如,一个或多个计算机处理器)或者虚拟化资源(例如,虚拟机、容器、或可用于执行软件应用的一些其他虚拟化组件)。图4中描绘的存储系统(406)还被示为包括存储设备(430、432、434)的形式的共享存储资源。存储设备(430、432、434)可以被体现为例如一个或多个SSD、HDD、或其他存储设备。
图4中描绘的示例方法包括从数据产生器(402)接收(408)数据集(404)。例如,图4中描绘的数据产生器(402)可以被体现为被执行以测试被测试的存储系统内的硬件和软件组件的对存储系统的仿真。考虑这样的示例,其中,使用连续集成(‘CI’)模型开发和测试用于存储系统的软件,在该连续集成模型中,系统软件的所有开发人员工作副本经常合并到共享主线中。在这样的示例中,可以通过运行存储系统的仿真并针对所仿真的存储系统运行自动化测试来测试这样的软件,从而生成由日志文件、错误日志、或某种其他形式的数据组成的、描述所仿真的存储系统的运行状态的数据的非常大的数据集(404)。
在图4描绘的示例方法中,可以例如通过在数据产生器(402)生成数据集时接收数据集、通过周期性地轮询数据产生器(402)将数据集写入的位置、或者以其他方式来从数据产生器(402)接收(408)数据集(404)。实际上,尽管在图4所示的实施例中数据产生器(402)被描述为位于存储系统(406)的外部,但在其他实施例中,数据产生器(402)实际上可以在存储系统(406)本身上执行,并且甚至可以将数据集直接写到存储系统(406)内的存储资源。
图4中描绘的示例方法还包括在存储系统(406)内存储(410)数据集(404)。在图4中描绘的示例方法中,数据集(404)被描述为在存储系统(406)内被存储在多个切片(424、426、428)中。在这样的示例中,第一切片(424)可以代表数据集的第一部分,第二切片(426)可以代表数据集的第二部分,第三切片(428)可以代表数据集的第三部分,其中,使用RAID或RAID类技术在一个或多个存储设备变得不可用的情况下提供数据冗余。这样,奇偶校验数据也可以被维持在存储系统(406)上,使得数据集切片(424、426、428)和任何奇偶校验数据形成RAID条带。读者将理解,可以通过其他方式存储数据集(404),并且可以通过数据产生器(402)本身访问存储系统(406)、通过存储系统上的系统软件和系统硬件使得数据集(404)(或其切片)被写入存储系统(406)中的存储设备(430、432、434)中、或者以某种其他方式来将数据集(404)存储(410)在存储系统(406)内。
图4中描绘的示例方法还包括将处理资源(416)分配(412)到分析应用(422)。例如,图4中描绘的分析应用(422)可以体现为检查数据集以便得出关于包含在数据集中的信息的结论(包括得出关于数据产生者(402)的结论)的应用。分析应用(422)可以包括人工智能或机器学习组件、将非结构化数据转换为结构化或半结构化数据的组件、大数据组件等。
在图4中描绘的示例方法中,可以例如通过在存储系统(406)内分配物理资源以供分析应用(422)使用来执行将处理资源(416)分配(412)给分析应用(422)。例如,可以分配一个或多个计算机处理器以供分析应用(422)使用,以使得分析应用(422)在一个或多个计算机处理器上执行。替代地,可以通过在存储系统(406)内分配虚拟化物理资源以供分析应用(422)使用来执行将处理资源(416)分配(412)到分析应用(422)。例如,可以分配一个或多个虚拟机以供分析应用(422)使用,以使得分析应用(422)在一个或多个虚拟机上执行。同样地,可以通过使用一个或多个容器来执行将处理资源(416)分配(412)到分析应用(422),使得分析应用(422)在一个或多个容器内部署和执行。
在图4所示的示例方法中,在处理资源(416)上执行(414)分析应用(422)包括从存储系统(406)摄取数据集(404)。在这样的示例中,分析应用(422)可以通过在数据集(404)已经被存储在存储系统(406)内之后从存储系统(406)读取数据集(404)来从存储系统(406)摄取数据集(404)。读者将理解,由于数据集(404)被存储在共享存储装置内,因此分析应用(422)不需要将数据集的副本保留在只能由用于执行分析应用(422)的处理资源访问的存储装置(例如,直接附接存储装置)中。
为了进一步解释,图5阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图5中描绘的示例方法类似于图4中描绘的示例方法,因为图5中描绘的示例方法也包括从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)中、将处理资源(416)分配(412)到分析应用(422)、以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
图5中描绘的示例方法还包括将附加处理资源(418)分配(502)给实时分析应用(506)。实时分析应用(506)可以体现为例如检查数据集以便得出关于包含在数据集中的信息的结论(包括得出关于数据产生器(402)的结论)的应用。类似于分析应用(422),实时分析应用(506)也可包括人工智能或机器学习组件、将非结构化数据转换为结构化或半结构化数据的组件、大数据组件等。然而,与分析应用(422)不同,实时分析应用(506)在生成数据集时对其进行检查,而不是分析本质上更为历史性的数据集。
在图5所示的示例方法中,可以例如通过在存储系统(406)内分配物理资源以供实时分析应用(506)使用,来将附加处理资源(418)分配(502)给实时分析应用(506)。例如,可以分配一个或多个计算机处理器以供实时分析应用(506)使用,使得实时分析应用(506)在一个或多个计算机处理器上执行。替代地,可以通过在存储系统(406)内分配虚拟化物理资源以供实时分析应用(506)使用,来将附加处理资源(418)分配(502)给实时分析应用(506)。例如,可以分配一个或多个虚拟机以供实时分析应用(506)使用,使得实时分析应用(506)在一个或多个虚拟机上执行。同样地,可以通过使用一个或多个容器来执行将附加处理资源(418)分配(502)给实时分析应用(506),使得实时分析应用(506)在一个或多个容器内部署并执行。
在图5中描绘的示例方法中,在附加处理资源上执行(504)实时分析应用(506)可以包括在将数据集(404)存储(410)在存储系统(406)内之前摄取数据集(404)。在这样的示例中,实时分析应用(506)实际上可以是数据路径的一部分,因为数据集(404)在由存储系统接收时被馈送到实时分析应用(506)。读者将理解,在其他实施例中,可以以其他方式来实施实时分析应用(506)的实时性质。例如,实时分析应用(506)可以仅消耗已经在某个阈值内产生的数据集(404)的部分(例如,实时分析应用(506)可以仅消耗在最近30分钟内产生的数据集(404)的部分),而分析应用(422)消耗数据集(404)的所有其他部分。读者将理解,由于数据集(404)被存储在共享存储装置内,因此分析应用(422)和实时分析应用(506)不需要将数据集的副本保留在只能由用于执行分析应用(422)或实时分析应用(506)的处理资源访问的存储装置(例如,直接附接存储装置)中。实际上,分析应用(422)和实时分析应用(506)可能正在从存储在存储系统(406)内的数据集(404)的单个副本中读取数据集(404)的其相应的部分。
为了进一步解释,图6阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图6中描绘的示例方法类似于图4中描绘的示例方法,因为图6中描绘的示例方法也包括:从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)内、将处理资源(416)分配(412)给分析应用(422)、以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
在图6所示的示例方法中,数据集(404)包括描述计算系统的一个或多个执行状态的日志文件(602)。在图6所示的示例中,其执行状态在日志文件(602)中描述的计算系统可以例如被体现为作为软件开发和测试过程的一部分而被测试的存储系统。在这样的示例中,日志文件(602)可以包括描述存储系统响应于在存储系统上执行的测试套件而如何操作的信息。
在图6所示的示例方法中,在处理资源(416)上执行(414)分析应用(422)可以包括评估(604)日志文件(602)以识别与计算系统相关联的一个或多个执行模式。继续其中其执行状态在日志文件(602)中描述的计算系统被体现为作为软件开发和测试过程的一部分而进行测试的存储系统的上述示例,日志文件(602)可包括诸如完成每次读取或写入所花费的时间之类的信息、指示所服务的IOPS数量的信息等。在这样的示例中,评估(604)日志文件(602)以识别与计算系统相关联的一个或多个执行模式可以包括:检查日志文件(602)以确定完成每次读取或写入的平均时间量以及完成每次读取或写入的平均时间量是否可接受、检查日志文件(602)以确定完成每次读取或写入完成的平均时间量呈上升还是下降趋势、检查日志文件(602)以确定完成每次读取或写入的平均时间量在不同的负载级别下是否可接受等。实际上,与计算系统相关联的一个或多个执行模式可以专注于广泛的度量,并且可以用于检查系统健康状况、系统操作等的许多方面。
在图6所示的示例方法中,评估(604)日志文件(602)以识别与计算系统相关联的一个或多个执行模式可以包括将与已知执行模式相关联的指纹(fingerprint)与日志文件(602)中包含的信息进行比较(606)。在这样的示例中,与已知执行模式相关联的指纹可以包括诸如与某个特定已知执行模式相关联的一个或多个度量的范围、与某个特定已知执行模式相关联的警报模式之类的信息。例如,特定警报序列可能已经被标识为与将发生故障的计算系统相关联,因此,可存在包括该特定警报序列的指纹,使得可检查日志文件(602)以确定是否在日志文件(602)中也发现该指纹中所包含的特定警报序列,从而表明被测系统可能将发生故障。在图6描绘的示例方法中,与已知执行模式相关联的指纹可以包括多行指纹,其中,检查日志文件的多个行以确定日志文件是否包含特定指纹。同样,指纹可以包括事件的序列和组合,使得仅在日志文件(602)中识别出事件的序列或组合时才识别匹配。
为了进一步解释,图7阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图7中描绘的示例性方法类似于图4中描绘的示例性方法,因为图7中描绘的示例性方法也包括:从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)中、将处理资源(416)分配(412)给分析应用(422)、以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
在图7所示的示例方法中,将数据集(404)存储(410)在存储系统(406)中可以包括将数据集组织(708)成索引目录结构。在这样的示例中,可以通过以促进快速且准确地搜索目录结构的方式存储数据来创建索引目录结构。实际上,在测试期间生成的大型数据集(例如,日志文件)的名称可包括如时间戳、对生成日志文件的集群的标识等,并根据某些索引方案被组织在目录结构中。这样,索引文件系统实际上可以用作可快速搜索的数据库,但没有导致数据库在非常、非常大的数据集上表现不佳的对数据库的限制。
在图7所示的示例方法中,从数据产生器(402)接收(408)数据集(404)可以包括接收(702)非结构化数据集。在图7所示的示例方法中,非结构化数据集可以包括不具有预定义数据模型或未以预定义方式组织的非结构化数据。通常包含在日志文件中的这种非结构化信息通常是偏重于文本,以便于由负责查看日志文件的人员(例如,系统管理员)来理解。然而,非结构化数据经常具有不规则性和歧义,与结构化数据(例如,以字段形式存储在数据库中或在文档中注释的数据)相比,使用传统程序难以理解。
图7中描绘的示例方法还包括将非结构化数据集转换(704)为结构化数据集。在图7所示的示例方法中,结构化数据集包括其中数据可以驻留在记录或文件内的固定字段中的结构化(或半结构化)数据。在这样的示例中,结构化数据集可以包括具有高度组织性的信息,使得关系数据库(或类似的数据存储库)中的内容是无缝的,并且可以通过简单、直接的搜索引擎算法或其他搜索操作来容易地搜索。
在图7中描绘的示例方法中,可以例如通过使用诸如数据挖掘、自然语言处理(NLP)和文本分析之类的技术来找到非结构化数据中的模式或以其他方式解释非结构化数据,来执行将非结构化数据集转换(704)为结构化数据集。用于构造文本的技术可涉及使用元数据标记非结构化数据。在这样的实施例中,创建机器可处理结构的软件可以利用各种形式的人类交流中存在的语言、听觉和视觉结构,并且算法可以例如通过检查词形、句法等来从文本中推断这种固有结构。在这样的示例中,非结构化信息可以被丰富和标记以解决歧义,然后使用基于相关性的技术来促进搜索和发现。在图7所示的示例方法中,将数据集(404)存储(410)在存储系统(406)中可以包括将结构化数据集存储(706)在存储系统中。
为了进一步解释,图8A阐述了示出根据本公开的一些实施例的用于实现被配置为适配于单个机箱(未示出)内的人工智能和机器学习基础设施(800)(在本文中也称为“人工基础设施”)的示例计算机架构的图。尽管在该示例中,通信结构包括一组网络交换机(803),用于将网络设备(800A)与一个或多个GPU系统(801)互连并且用于人工智能和机器学习基础设施(800)通过一个或多个网络与一个或多个计算设备进行通信,但在其他实施方式中,通信结构可以被构造为定义网络设备(800A)与(一个或多个)GPU系统(801)以及一个或多个计算设备或主机计算机系统之间的不同的通信路径。
在该示例人工智能和机器学习基础设施(800)中,网络设备(800A)可以是包括一个或多个存储设备的存储系统,并且在该示例中GPU系统(801)可以是五(5)个NVIDIA DGX-1GPU系统。在该示例中,网络设备(800A)可以分别使用四个100GbE连接来连接到两个交换机(803),其中,每个交换机(801)可以通过两个100GbE连接而连接到每个GPU系统(801),使得每个GPU系统(801)具有与网络设备(800A)的四(4)个100GbE连接。
为了进一步解释,图8B阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图8B中描绘的示例方法类似于图4中描绘的示例方法,因为图8B中描绘的示例方法也包括:从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)中、将处理资源(416)分配(412)给分析应用(422),以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
在图8B中描绘的示例方法中,从数据产生器(402)接收(408)数据集(404)可以包括从多个数据产生器(402、802)接收(806)对于每个数据产生器是唯一的数据集(404、804)。例如,图8B中描绘的数据产生器(402、802)可以体现为被执行以便测试被测试的存储系统内的硬件和软件组件的对多个存储系统的仿真。例如,第一数据产生器(402)可以是第一存储系统的仿真版本,并且第二数据产生器(802)可以是第二存储系统的仿真。在图8B中描绘的示例方法中,可以例如通过在每个数据集由相应的数据产生器(402、802)生成时接收每个数据集、通过定期地轮询每个数据产生器(402、802)将数据集写入的位置、或以其他方式来执行接收(806)对于每个数据产生器是唯一的数据集(404、804)。实际上,尽管在图8B所示的实施例中数据产生器(402、802)被描绘为驻留在存储系统(406)的外部,但在其他实施例中,一个或多个数据产生器(402、802)实际上可以在存储系统(406)本身上执行,并且甚至可以将数据集直接写入存储系统(406)内的存储资源。
在图8B所示的示例方法中,将数据集(404)存储(410)在存储系统(406)中可以包括将每个唯一数据集(404、804)存储(808)在存储系统(406)中。在图8B中描绘的示例方法中,每个唯一数据集(404、804)被描绘为以多个切片(424、426、428、816、818、820)存储在存储系统(406)内。例如,第一数据集(404)被存储为第一组切片(424、426、428),并且第二数据集(804)被存储为第二组切片(816、818、820)。在这样的示例中,每个切片可以表示数据集的不同部分,其中,使用RAID或RAID类的技术来提供一个或多个存储设备变为不可用的数据冗余。这样,奇偶校验数据也可以被维持在存储系统(406)上,使得数据集切片(424、426、428、816、818、820)和任何奇偶校验数据形成RAID条带。读者将理解,可以以其他方式存储每个数据集(404、804),并且可以通过数据产生器(402、802)自身访问存储系统(406)、通过存储系统上的系统软件和系统硬件使得将每个数据集(404、804)(或其切片)被写入存储系统(406)中的存储设备(430、432、434)、或以其他方式来将每个数据集(404、804)存储(808)在存储系统(406)中。
在图8B所示的示例方法中,将处理资源(416)分配(412)给分析应用(422)可以包括将唯一处理资源(416、418)分配(810)给多个分析应用(422、814)中的每一个。在图8B中描绘的示例方法中,可以例如通过在存储系统(406)内分配物理资源以供分析应用(422、814)使用来执行将唯一处理资源(416、418)分配(810)给多个分析应用(422、814)中的每一个。例如,可以分配第一计算机处理器以供第一分析应用(422)使用,使得分析应用(422)在第一计算机处理器上执行,并且可以分配第二计算机处理器以供第二分析应用(814)使用,使得分析应用(814)在第二计算机处理器上执行。替代地,可以通过在存储系统(406)内分配虚拟化物理资源以供分析应用(422、814)中的每一个使用来执行将唯一处理资源(416、418)分配(810)给多个分析应用(422、814)中的每一个。例如,可以分配第一组虚拟机以供第一分析应用(422)使用,使得分析应用(422)在第一组虚拟机上执行,并且可以分配第二组虚拟机以供第二分析应用(814)使用,使得分析应用(814)在第二组虚拟机上执行。同样地,可以通过使用容器来执行将唯一处理资源(416、418)分配(810)给多个分析应用(422、814)中的每一个,使得第一分析应用(422)在第一容器中部署并执行,并且第二分析应用(814)在第二容器中部署并执行。
在图8B中描绘的示例方法中,在处理资源(416)上执行(414)分析应用(422)可以包括在处理资源(416、418)上执行(812)多个分析应用(422、814),包括从存储系统(406)摄取每个唯一数据集(404、804)。在这样的示例中,第一分析应用(422)可以通过在第一数据集(404)已经被存储在存储系统(406)内之后从存储系统(406)读取数据集(404)来从存储系统(406)摄取第一数据集(404),并且第二分析应用(814)可以通过在第二数据集(804)已经被存储在存储系统(406)内之后从存储系统(406)读取数据集(804)来从存储系统(406)摄取第二数据集(804)。读者将理解,因为数据集(404)被存储在共享存储装置中,因此任何分析应用(422、814)都不需要将数据集的副本保留在只能由用于执行分析应用(422、814)的处理资源访问的存储装置(例如,直接附接存储装置)中。
为了进一步解释,图9阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图9中描绘的示例方法类似于图4中描绘的示例方法,因为图9中描绘的示例方法也包括:从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)内、将处理资源(416)分配(412)给分析应用(422),以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
图9中描绘的示例方法还包括检测(902)分析应用(422)已停止正确地执行。可以例如通过检测分析应用(422)已经崩溃、通过检测分析应用(422)变得不响应、通过检测分析应用(422)在其上执行的处理资源变得不可用、或以其他方式来检测(902)分析应用(422)已停止正确地执行。在这样的示例中,存储系统(406)可以通过使用心跳机制、通过检测不存在来自分析应用(422)的消息传递或报告、或通过使用类似的机制来检测(902)分析应用(422)已停止正确地执行。
图9中描绘的示例方法还包括将第二处理资源(418)分配(904)给分析应用(422)。在图9所示的示例方法中,可以例如通过在存储系统(406)内分配物理资源以供分析应用(422)使用来执行将第二处理资源(418)分配(904)给分析应用(422)。例如,可以分配一个或多个计算机处理器以供分析应用(422)使用,使得分析应用(422)在一个或多个计算机处理器上执行。替代地,可以通过在存储系统(406)内分配虚拟化物理资源以供分析应用(422)使用,来将第二处理资源(418)分配(904)给分析应用(422)。例如,可以分配一个或多个虚拟机以供分析应用(422)使用,以使得分析应用(422)在一个或多个虚拟机上执行。同样地,可通过使用一个或多个容器来执行将第二处理资源(418)分配(904)给分析应用(422),使得分析应用(422)在一个或多个容器内部署和执行。
图9中描绘的示例方法还包括在第二处理资源(418)上执行(906)分析应用(422),包括摄取数据集(404)。在这样的示例中,分析应用(422)可以通过在数据集(404)已经被存储在存储系统(406)内之后从存储系统(406)读取数据集(404)来从存储系统(406)摄取数据集(404)。读者将理解,由于数据集(404)被存储在共享存储装置内,因此分析应用(422)不需要将数据集的副本保留在只能由用于执行分析应用(422)的处理资源访问的存储装置(例如,直接附接存储装置)中。
为了进一步解释,图10阐述了示出根据本公开的一些实施例的用于在包括计算资源和共享存储资源的存储系统中执行大数据分析流水线的另一示例方法的流程图。图10中描绘的示例方法类似于图4中描绘的示例方法,因为图10中描绘的示例方法也包括:从数据产生器(402)接收(408)数据集(404)、将数据集(404)存储(410)在存储系统(406)内、将处理资源(416)分配(412)给分析应用(422),以及在处理资源(416)上执行(414)分析应用(422),包括从存储系统(406)摄取数据集(404)。
图10中描绘的示例方法还包括检测(1002)分析应用(422)需要附加处理资源。可以例如通过检测分析应用(422)正在其上执行的处理资源被充分利用或者利用率已经达到阈值水平、通过检测分析应用(422)变得不响应、响应消息较慢、报告结果较慢、或者以其他方式表现出与缺乏足够的处理资源相关联的某种行为、或者以其他方式来执行检测(1002)分析应用(422)需要附加处理资源。
图10中描绘的示例方法还包括将附加处理资源(418)分配(1004)给分析应用(422)。在图10所示的示例方法中,可以例如通过在存储系统(406)内分配附加物理资源以供分析应用(422)使用,来执行将附加处理资源(418)分配(1004)给分析应用(422)。例如,可以初始地分配第一计算机处理器以供分析应用(422)使用,使得分析应用(422)在第一计算机处理器上执行。在这样的示例中,可以另外地分配第二计算机处理器以供分析应用(422)使用,使得分析应用(422)在第一计算机处理器和第二计算机处理器两者上执行。替代地,可以通过在存储系统(406)内分配附加虚拟化物理资源以供分析应用(422)使用,来将附加处理资源(418)分配(1004)给分析应用(422)。例如,可以初始地分配第一组虚拟机以供分析应用(422)使用,使得分析应用(422)在第一组虚拟机上执行。在这样的示例中,可以另外地分配第二组虚拟机以供分析应用(422)使用,使得分析应用(422)在第一组虚拟机和第二组虚拟机两者上执行。同样地,可以通过使用容器来将附加处理资源(418)分配(1004)给分析应用(422),使得分析应用(422)初始地在随后用于支持分析应用(422)的第一容器和第二容器内部署和执行。
图10中描绘的示例方法还包括在附加处理资源(418)上执行(1006)分析应用(422)。读者将理解,尽管上述实施例涉及其中在多个处理资源(416、418)上执行分析应用(422)的实例的实施例,但在其他实施例中,不同的处理资源(416、418)替代地被用于执行分析应用(422)的各个部分。例如,分析应用(422)的第一部分可以在第一组处理资源(416)上执行,并且分析应用(422)的第二部分可以在第二组处理资源(418)上执行。读者将进一步理解,分析应用(422)所利用的存储装置的共享性质产生更高效的可伸缩性,因为如若分析应用(422)在具有直接附接存储装置的处理节点上执行(其中,每个节点都维护自己的数据集副本)将期望的,应用可以被扩展(即可以将更多处理资源提供给分析应用)而无需复制数据集、通过网络连接发送数据集等。
如上所述,分析应用(422)可以包括人工智能或机器学习组件。实际上,分析应用(422)可以是AI应用。数据是现代AI和深度学习算法的要点。在开始训练之前,必须解决的一个问题是围绕收集对于训练精确的AI模型至关重要的标记数据。可能需要全面大规模AI部署以连续地收集、清理、转换、标记和存储大量数据。添加额外的高质量数据点将直接转化为更精确的模型和更好的见解。数据样本可经历一系列处理步骤,包括但不限于:1)将数据从外部源提取到训练系统中,并以原始形式存储数据,2)以便于训练的格式清理和转换数据,包括将数据样本链接到适当的标签,3)探索参数和模型,使用较小数据集进行快速测试,然后迭代以收敛到最有希望的模型以推送到生产集群,4)执行训练阶段以选择随机批次的输入数据,包括新样本和旧样本二者,并将它们馈送到生产GPU服务器以进行计算,以更新模型参数,以及5)进行评估,包括使用训练中未使用的数据的保留部分以评估保留数据上的模型精确性。此生命周期可适用于任何类型的并行化机器学习,而不仅仅是神经网络或深度学习。例如,标准的机器学习框架可依赖于CPU而不是GPU,但是数据提取和训练工作流程可以是相同的。读者将理解,单个共享存储数据中心在整个生命周期中创建协调点,其中在提取、预处理和训练阶段中无需额外的数据副本。所提取的数据很少仅用于一个目的,并且共享存储装置给予训练多个不同的模型或将传统分析应用于数据的灵活性。
读者将理解,AI数据流水线中的每个阶段可能对数据中心(例如,存储系统或存储系统的集合)具有不同的要求。横向扩展存储系统必须为所有类型的访问类型和模式(从较小的充满元数据的文件到大型文件、从随机访问模式到顺序访问模式、以及从低并发性到高并发性)提供卓越的性能。由于系统可以服务于非结构化工作负载,因此上述存储系统可以用作理想AI数据中心。在第一阶段,理想情况下,数据被提取并存储到后续阶段将使用的同一数据中心上,以避免过多的数据复制。接下来的两个步骤可以在可选地包含GPU的标准计算服务器上完成,然后在第四和最后一个阶段中,在功能强大的GPU加速服务器上运行完整的训练生产作业。通常,在同一数据集上有生产流水线以及实验流水线进行操作。此外,GPU加速服务器可以独立地用于不同的模型,或者结合在一起以在一个更大的模型上进行训练,甚至跨多个系统以进行分布式训练。如果共享存储层较慢,则必须在每个阶段将数据复制到本地存储装置中,使得时间浪费在将数据暂存到不同服务器上。用于AI训练流水线的理想数据中心提供与本地存储在服务器节点上的数据类似的性能,同时还具有使所有流水线阶段能够同时运行的简单性和性能。
数据科学家致力于通过以下多种方法来提高经训练的模型的实用性:更多的数据、更好的数据、更智能的训练、以及更深的模型。在许多情况下,会有数据科学家团队共享相同的数据集,并且并行工作以产生新的和改善的训练模型。通常,会有数据科学家团队在这些阶段中同时处理相同的共享数据集。数据处理、实验和全面训练层的多个并发工作负载满足了存储层上的多种访问模式的需求。换句话说,存储装置不能仅满足大型文件读取,而且必须解决大、小文件读取和写入的混合。最后,随着多个数据科学家探索数据集和模型,以原始格式存储数据以便为每个用户提供以独特的方式转换、清理和使用数据的灵活性可能是至关重要的。上述存储系统可以为数据集提供自然的共享存储位置,并具有数据保护冗余(例如,通过使用RAID6)以及作为用于多个开发人员和多个实验的公共访问点所必需的性能。使用上述存储系统可以避免为本地工作而仔细复制数据子集的需要,从而节省了工程时间和GPU加速服务器使用时间。随着原始数据集和所需转换的不断更新和变化,这些副本将成为持续的并且不断增长的重负。
读者将理解,深度学习取得成功的根本原因是通过更大数据集大小而持续改进模型。相反地,经典的机器学习算法(如逻辑回归)在较小数据集大小处就停止了提高精确性。这样,计算资源和存储资源的分离还可以允许每个层的独立扩展,从而避免了同时管理两者时固有的许多复杂性。随着数据集大小增长或考虑新数据集,横向扩展存储系统必须能够容易地扩展。类似地,如果需要更多的并行训练,则可以添加额外的GPU或其他计算资源,而无需担心其内部存储。此外,由于存储系统提供的随机读取带宽、存储系统以高速率随机读取较小文件(50KB)的能力(意味着不需要额外的工作量来聚合单独的数据点以生成较大的、易于存储的文件)、存储系统扩展容量和性能的能力(随着数据集的增长或吞吐量需求的增长)、存储系统支持文件或对象的能力、存储系统针对大文件或小文件调整性能的能力(即无需用户配置文件系统)、存储系统即使在生产模型训练期间也支持硬件和软件的无中断升级的能力、以及多个其他原因,上述存储系统可以使得构建、操作和扩展AI系统更加容易。
由于许多类型的输入(包括文本、音频或图像)将被本机存储为小文件,因此存储层的小文件性能可能是至关重要的。如果存储层不能很好地处理小文件,则将需要额外的步骤来将样本预处理并分组为较大文件。在旋转磁盘上构建的、依赖SSD作为缓存层的存储装置可能无法达到所需的性能。由于使用随机输入批次进行训练会生成更精确的模型,因此整个数据集必须是以完整性能可访问的。SSD缓存仅为数据的较小子集提供高性能,并且在隐藏旋转驱动器的延迟方面将无效。
读者将进一步理解,在本公开的一些实施例中,大数据服务可以被内置到共享存储系统中,使得大数据分析、机器学习、人工智能和其他功能可以作为服务被提供。在这样的示例中,大数据分析应用、机器学习应用、人工智能应用等可以合并到与控制存储系统操作的系统软件相同(或其他方式可访问)的代码库中,从而可以优化系统硬件、系统软件和附加应用之间的交互。此外,这些附加应用可以作为分析堆栈中的齿轮(cog)来提供,以辅助存储系统的用户开发和部署大数据分析应用、机器学习应用、人工智能应用和类似应用。
读者将进一步理解,在本公开的一些实施例中,幂等操作可以允许任意地重新运行和修改分析流水线。通过使用上述与编排和容器化相关的概念,存储系统可以呈现在幂等块中运行的软件层,使得可以采用自动方法来恢复管理。在这样的示例中,如果存在作业的依赖关系图,其中每个作业具有一定等级的幂等性,则可以对图中任何位置处的作业进行更改,并可以将确定需要重新运行哪些作业以完成恢复。此外,由于可以分配附加计算资源,因此系统可以自动进行数据更改或以简单的形式执行它们。
读者将进一步理解,在本公开的一些实施例中,通过添加心跳事件或预期数据模式,存储系统实质上可以在数据流水线上运行连续测试、采取恢复动作、以及如果心跳丢失则重新运行步骤。由于在包括具有不同网络和机架配置的许多主机的环境中执行分析时很多事情都会出错,因此可能会发生错误,并且可能很难发现。即使错误不常见,也可能很难发现并且很难追溯到根本原因。这样,本文描述的实施例可以通过添加期望的指纹、期望发生的规则事件、以及信息可以持久以捕获实际的系统性能,来添加对流水线的输出的连续监测。一旦发现异常,则存储系统可能会尝试重新收集数据、重新运行作业、在仍然检测到异常的情况下发出警报、以及以其他方式支持自我修复的大数据分析流水线。
读者将理解,尽管上述实施例涉及其中步骤似乎按照某种顺序发生的实施例,但除非明确说明,否则实际上不需要排序。此外,在一些实施例中,出现在不同的图中的步骤实际上可以在单个实施例中发生。也就是说,上面包括的步骤的组织是为了易于解释,并且决不限制本文描述的概念的各种实施例。实际上,本公开的实施例可以包括上述和本文要求保护的步骤的任何组合。同样地,本公开的实施例可以在本文描述的任何存储系统或其任何组合上实现。
为了进一步解释,图11A阐述了示出根据本公开的一些实施例的示例人工智能和机器学习基础设施(1100)的图。如图所示,人工智能和机器学习基础设施(1100)可以完全在单个机箱(1101)内体现或实现。在一些示例中,机箱(1101)可以根据数据中心内的标准机架的尺寸来实现,其中,单个机箱(1101)包括一个或多个存储系统(1120),例如,任何上述存储系统、或这样的存储系统的任何组合,并且其中,单个机箱(1101)可以进一步包括一个或多个GPU系统(1130A-1130N)。
作为一个示例实施例,机箱(1101)可以包括实现为闪存设备的一个或多个PureTMFlashBladeTM、或一种或多种其他类型的闪存设备的(一个或多个)存储系统(1120),并且一个或多个GPU系统(1130A-1130N)可以实现为一个或多个NVIDIATMDGX-1TMGPU架构或一个或多个其他GPU架构。在此示例中,GPU架构可以进一步包括多个GPU和一个或多个CPU,其中,GPU架构可以进一步包括板载系统存储器。然而,在其他示例中,存储系统和GPU架构的不同组合可以实现为单个机箱(1101)内的集成人工智能和机器学习基础设施。
此外,在一些示例中,单个机箱(1101)可以包括小于或大于标准机架尺寸的一个或多个长度、宽度和深度物理尺寸,例如,单个机箱(1101)可以是半机架或更小。在此示例中,机架的高度可以为约42U或6英尺(180cm),其中,“U”度量单位可以被定义为44.50毫米(1.752in),并且其中,机架宽度可以为19英寸(482.60mm),并且其中,深度可以是36英寸(914.40mm)。
在该实施例中,(一个或多个)存储系统(1120)的高度(1102)可以是4U,其中,宽度(1104)和深度(1106)被定义为适合于机箱(1101)的物理尺寸。类似地,(一个或多个)GPU系统(1130A-1130N)中的每一个可以具有相同或不同的尺寸,其中,示例高度(1108)可以定义为1U或2U,并且其中,宽度(1110)和深度(1112)可以定义为适合于机箱(1101)的物理尺寸。
为了进一步解释,图11B阐述了示出根据本公开的一些实施例的用于在单个机箱(1101)内实现人工智能和机器学习基础设施(1100)的示例计算机架构的图。尽管在该示例中,通信结构包括分层布置的一组网络交换机(1132A-1132C),用于将(一个或多个)存储系统(1120)与一个或多个GPU系统(1130A-1130N)互连,并且用于人工智能和机器学习基础设施(1100)通过一个或多个网络(1131)与一个或多个计算设备(1129)进行通信,但在其他实施方式中,通信结构可以构造为定义(一个或多个)存储系统(1120)和(一个或多个)GPU系统(1130A-1130N)、以及一个或多个计算设备或主机计算机系统之间的不同通信路径。
在一些实施方式中,人工智能和机器学习基础设施(1100)通信结构可以通过融合以太网(RoCE)结构来实现远程直接存储器访问(RDMA)协议,其中,这样的通信结构实现从源计算机系统到目标计算机系统的直接存储器访问,而不涉及源计算机系统或目标计算机系统上的操作系统,其中,根据通信路径的方向,(一个或多个)存储系统(1120)可以是源计算机系统或目标计算机系统,并且GPU系统(1130A-1130N)可以是源计算机系统或目标计算机系统。
在此示例中,给定人工智能和机器学习基础设施(1100)中描述的通信结构(其中该通信结构可通过每个交换机(1132A-1132C)实现多个并行通信信道),并且基于包括多个存储设备的一个或多个存储系统(1120)(其中每个存储设备可以包括一个或多个控制器,每个控制器可以直接与(一个或多个)GPU系统(1130A-1130N)内的一个或多个GPU通信),人工智能和机器学习基础设施(1100)可以在一个或多个存储系统(1120)内的存储设备与(一个或多个)GPU系统(1130A-1130N)的计算元件的不同组合之间实现多个并行高速通信路径。
在其他示例实施方式中,通信结构可以实现其他网络通信协议,包括以上关于图1A-3B中描述的存储系统(340)讨论的通信协议,包括无限带宽和iWARP。
在一些实施方式中,人工智能和机器学习基础设施(1100)可以被扩展为同一机架(1101)内包括附加存储系统或附加GPU系统,其中,通信结构可以被类似地扩展为经由网络交换机(1132A-1132C)连接附加存储系统和/或GPU系统。在其他情况下,通信结构可以被扩展为包括通信结构的附加网络交换机或附加层。
为了进一步解释,图11C阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施软件栈(1105)的示例实施方式的图。
如图11C所示,人工智能和机器学习基础设施软件堆栈(1105)可以完全在图11A和图11B中描绘的人工智能和机器学习基础设施(1100)内实现。此外,人工智能和机器学习基础设施软件堆栈(1105)可以包括多个软件层,包括多节点训练(1107A)层、深度学习框架(1107B)层、容器化(1107C)层、横向扩展GPU计算(1107D)层、横向扩展文件/对象协议(1107E)层和横向扩展存储(1107F)层,以及其他未在图11C中描述的潜在软件层。
多节点训练(1107A)层可以实现扩展工具包或配置接口,其提供用于人工智能和机器学习基础设施(1100)内的多节点训练的规范。扩展工具包可用于指定(一个或多个)存储系统(1120)、GPU系统(1130A-1130N)和网络组件(包括通信结构的网络交换机(1132A-132C))之间的配置设置。
深度学习框架(1107B)层可以实现深度学习框架,例如,Caffe、Caffe2、mxnet、pytorch、torch和其他深度学习框架。此外,可以将在深度学习框架(1107B)层实现的每个深度学习框架作为容器传递到容器化(1107C)层。此外,容器化(1107C)层可以实现用于与横向扩展GPU计算(1107D)层的GPU进行通信的GPU驱动程序,并且容器化(1107C)层还可以实现NVIDIATMDockerTM。
横向扩展GPU计算(1107D)层可以由GPU系统(1130A-1130N)实现,并且横向扩展GPU计算(1107D)层可以提供用于分配作业、发送或接收数据、添加或删除GPU系统、或用于配置GPU系统(1130A-1130N)中的一个或多个GPU的接口。在一些示例中,由横向外扩展GPU计算(1107D)层提供的功能可以经由API来提供给上方和下方的层,该API指定用于相应的层接口的每个支持功能的命令和参数。
横向扩展文件/对象协议(1107E)层可以提供用于逻辑数据处理层的API,逻辑数据处理层例如为文件系统,其提供用于创建、删除、移动、复制的文件系统操作,或其他标准文件系统操作。在一些示例中,横向扩展文件/对象协议(1107E)层可以根据所指定的一个或多个字节范围来提供块级访问或数据访问。
横向扩展存储(1107F)层可以由(一个或多个)存储系统(1130)实现,并且横向扩展存储(1107F)层可以为上面关于图1A-3B所述的任何存储系统功能提供接口,包括读取、写入、擦除、或配置存储设备设置,或配置垃圾回收,或用于对由每个所包括的存储系统或存储设备所实现的一个或多个控制器进行编程。例如,横向扩展存储(1107F)层可以提供用于对存储在存储系统的存储器组件内的物理数据执行输入/输出操作的API。
在一些示例中,横向扩展文件/对象协议(1107E)层和横向扩展存储(1107F)层可以单独地或组合地提供下列项的实施方式:虚拟存储器环境、内存管理、或用于创建、删除、复制、读取或写入文件或对象的一种或多种类型的文件系统或方法。
为了进一步解释,图11D阐述了示出根据本公开的一些实施例的用于互连人工智能和机器学习基础设施的图形处理单元层和存储层的示例方法的流程图。尽管不太详细地描述,但示例人工智能和机器学习基础设施(1100)可以类似于以上参考图11A-11C描述的实施方式,或其任何组合。
在该示例中,数据路径可以考虑使用用于直接在横向扩展GPU计算(1107D)层与横向扩展存储(1107F)层之间的通信路径的一种或多种协议。在其他示例中,数据路径可以考虑使用用于实现横向扩展GPU计算(1107D)层、横向扩展文件/对象协议(1107E)层和横向扩展存储(1107F)层之间的通信路径的一种或多种协议,其中,横向扩展GPU计算(1107D)层通过一个或多个API与横向扩展文件/对象协议(1107E)层进行通信,并且其中,横向扩展文件/对象协议(1107E)层通过一个或多个API与横向扩展存储(1107F)层进行通信。虽然在该示例中,数据路径包括人工智能和机器学习基础设施软件堆栈的最低三个层(1107D、1107E、1107F),但在其他示例中,数据路径可以包括一个或多个其他软件层,包括多节点训练(1107A)层、深度学习框架(1107B)层、和/或容器化(1107C)层。
在该示例中,数据路径的定义可以基于如上关于图11A-11C所描绘和描述的软件堆栈的集成。例如,横向扩展存储(1107F)层可以被配置为提供API调用,该API调用指定横向扩展存储(1107F)层以对所存储的数据实施数据转换或数据分析,其中,API调用的结果是由横向扩展存储(1107F)层执行的数据转换或数据分析的结果,并且其中,横向扩展存储(1107F)层使用一个或多个存储设备的一个或多个控制器来实施数据分析或数据转换。
在一些示例中,由横向扩展存储(1107F)层提供的API可提供数据分析或数据转换功能或例程,包括以下一项或多项:JPEG解码、置乱、组合文件、和/或调整矩阵/张量。通常,并且依赖于存储系统(1130)的存储设备的控制器被配置为执行以上参考图1A-3B所述的任何类型的通用计算功能,由横向扩展存储(1107F)层提供的API可以为任何类型的数据分析或数据转换提供API接口。作为一个示例,横向扩展存储(1107F)层可以提供API调用,该API调用指示横向扩展存储(1107F)层选择与特定类别匹配的数据的子集。
此外,在一些示例中,由横向扩展存储(1107F)层提供的API可以包括API调用,该API调用视为参数功能代码或对功能代码的引用,其中,横向扩展存储(1107F)层的(一个或多个)存储系统(1130)的一个或多个控制器可以执行功能代码以执行指定的数据分析或数据转换。以此方式,横向扩展GPU计算(1107D)层可以将一些计算任务卸载到横向扩展存储(1107F)层,否则这些计算任务将由横向扩展GPU计算(1107D)层执行。
在一些示例中,横向扩展存储(1107F)层可以管理计算集群,使得数据分析和/或数据转换在集中式管理平面下发生。在其他示例中,横向扩展存储(1107F)层可以发起数据分析和/或数据转换或数据管理操作而无需来自横向扩展GPU计算(1107D)层的任何指令或命令,其中,发起数据分析和/或数据转换、或数据管理操作可以至少部分地基于一个或多个控制器识别通过API从横向扩展GPU计算(1107D)层请求的操作中的模式。在一些示例中,横向扩展GPU计算(1107D)层内的给定GPU可以与横向扩展存储(1107F)层的存储设备直接通信,而无需操作系统的干预。
在一些实施方式中,横向扩展GPU计算(1107D)层可以对横向扩展文件/对象协议(1107E)层的API进行调用,或者横向扩展GPU计算(1107D)层可以直接对横向扩展存储(1107F)层的API进行调用。
类似地,横向扩展存储(1107F)层可以直接向横向扩展GPU计算(1107D)层内的一个或多个GPU的系统存储器生成结果。例如,横向扩展存储(1107E)层可以将来自API调用的结果直接写到横向扩展GPU计算(1107D)层的一个或多个GPU的缓存或其他存储器组件中。
如图11D所示,该示例方法包括:在计算机系统的图形处理单元处生成(1152)功能调用(1152A),其指定要由该计算机系统的存储系统执行的一个或多个操作;跨计算机系统的通信结构将功能调用(1152A)从图形处理单元传输(1154)到存储系统(1154);在计算机系统的存储系统处并基于功能调用(1152A)生成(1156)一个或多个结果(1156A);以及跨通信结构将一个或多个结果(1156A)从存储系统传输到图形处理单元(1158)。
在该示例中,图形处理单元可以是(一个或多个)GPU系统1130A-1130N的图形处理单元中的任一个,计算机系统可以是包括人工智能和机器学习基础设施(1100)的计算机系统,并且存储系统可以是(一个或多个)存储系统(1120)的存储系统中的任何存储系统。此外,在该示例中,人工智能和机器学习基础设施系统(1100)可操作以执行从被实现为云服务提供商(1173A)内的云服务的云AI服务(1171)接收的一个或多个机器学习任务,其中,云AI服务(1171)跨网络(未示出)从主机计算机(1170)接收任务,其中,可以通过由云AI服务(1171)提供的用户界面来指定任务。此外,人工智能和机器学习基础设施系统(1100)可以在数据中心(未示出)内实现或在客户位置现场实现。
在计算机系统的图形处理单元处生成(1152)指定由计算机系统的存储系统执行的一个或多个操作的功能调用(1152A)可以如上面参考图11A-11C所描述的来实现,在给定特定任务的情况下,GPU识别相应的API调用,并生成用于API调用的参数。
跨计算机系统的通信结构将功能调用(1152A)从图形处理单元传输(1154)到存储系统(1154)可以如上面参考图11A-11C所描述的来实现,其中,功能调用(1152A)跨通信端口传输到一个网络交换机,并且其中,网络交换机将功能调用路由到(一个或多个)存储系统(1120)处的网络端口。
在计算机系统的存储系统处并基于功能调用(1152A)生成(1156)一个或多个结果(1156A)可以如上面参考图11A-11C所描述的来实现,其中,(一个或多个)存储系统(1120)上的一个或多个控制器可以根据功能调用所指定的操作和参数来执行功能调用。
跨通信结构将一个或多个结果(1156A)从存储系统传输(1158)到图形处理单元(1158)可以如上面参考图11A-11C所描述的来实现,其中,结果(1156A)跨通信端口被传输到网络交换机,并且其中,网络交换机将结果(1156A)路由到(一个或多个)GPU系统(1130A-1130N)处的网络端口。
为了进一步解释,图12A阐述了示出根据本公开的一些实施例的监测人工智能和机器学习基础设施(1100)的示例方法的流程图。上述人工智能和机器学习基础设施(1100)可以包括一个或多个监测模块(1202a、1202b、1202n),或者可以以其他方式耦合至一个或多个监测模块。监测模块(1202a、1202b、1202n)可以体现为例如在诸如CPU之类的计算机硬件上执行的计算机程序指令。这样的计算机程序指令可以例如存储在包含在人工智能和机器学习基础设施(1100)所包括的存储系统内的一个或多个刀片中的存储器中,并且由包括在人工智能和机器学习基础设施(1100)所包括的存储系统内的一个或多个CPU来执行。读者将理解,可以构想其他实施例,例如,一个或多个监测模块(1202a、1202b、1202n)驻留在人工智能和机器学习基础设施(1100)所包括的服务器中并由其执行,一个或多个监测模块(1202a、1202b、1202n)驻留在人工智能和机器学习基础设施(1100)与之通信的云计算资源内并由其执行、或通过其他方式。
图12A中描绘的示例方法包括通过一个或多个监测模块(1202a、1202b、1202n)识别(1203)执行流水线中的瓶颈。例如,执行流水线可以体现为人工智能或机器学习流水线,其中,执行人工智能或机器学习应用的各个阶段被执行。这样的执行流水线可以包括例如识别特定数据集以用作对人工智能或机器学习应用的输入、从包含在人工智能和机器学习基础设施(1100)内的存储装置读取这样的数据集、对数据集执行一系列转换、通过多个人工智能或机器学习模型运行数据集、保留描述所执行的步骤以及各个执行阶段期间的数据集内容的审计信息、以及许多其他步骤。
在图12A中描绘的示例方法中,可由于多种原因而发生瓶颈。例如,当不足的资源被分配给执行流水线的一部分时可发生瓶颈,从而导致执行流水线的一部分对于执行流水线的其余部分创建瓶颈。考虑这样的示例,其中,执行流水线的一部分包括对数据集的一系列转换,其中一系列转换中的每个转换由计算机程序指令的不同模块执行。在这样的示例中,假设当计算机程序指令的第一模块已经完成第一转换时,计算机程序指令的第一模块将经转换的数据发送到将执行第二转换的计算机程序指令的第二模块。进一步假设当计算机程序指令的第二模块已经完成第二转换时,计算机程序指令的第二模块将经转换的数据发送到将执行第三转换的计算机程序指令的第三模块。在这样的示例中,假设第二转换比其他转换更复杂,并且还假设计算机程序指令的每个模块被赋予相同量的处理资源,模块将在这些处理资源上执行。在这样的示例中,第二转换的性能可能会造成瓶颈,因为考虑到第二转换是最复杂的转换,并且还考虑到计算机程序指令的第二模块仅能访问与计算机程序指令的第一模块和计算机程序指令的第三模块相同量的计算资源,因此第二转换可能需要更多时间来完成。
图12A中描绘的示例方法还包括通过一个或多个监测模块(1202a、1202b、1202n)发起(1204)对人工智能和机器学习基础设施(1100)的重新配置以解决执行流水线中的瓶颈。通过一个或多个监测模块(1202a、1202b、1202n)发起对人工智能和机器学习基础设施(1100)的重新配置以解决执行流水线中的瓶颈可以例如通过重新分配资源以解决执行流水线中的瓶颈来执行。继续上述示例,发起对人工智能和机器学习基础设施(1100)的重新配置以解决执行流水线中的瓶颈可以例如通过下述操作来执行:一个或多个监测模块(1202a、1202b、1202n)分配附加计算资源以支持对计算机程序指令的第二模块的执行。读者将理解,上述示例只是可能发生的许多瓶颈之一,并且为解决此类瓶颈而采取的措施也可以采取许多其他形式。例如,瓶颈可能由于处理瓶颈、调度瓶颈、工作负载分配和分发瓶颈等而发生。这样,为解决此类瓶颈而采取的动作可包括将单个步骤拆分为多个步骤(反之亦然)、更改调度操作的方式、将工作负载转移到不同的物理或虚拟资源等。
图12A中描绘的示例方法还可以包括监测(1206)对人工智能和机器学习基础设施(1100)中所包含的一个或多个存储系统的访问模式。监测(1206)对人工智能和机器学习基础设施(1100)中所包含的一个或多个存储系统的访问模式可以例如通过跟踪对存储系统的访问的位置、通过跟踪对存储系统的访问的类型(例如,读取、写入)等来执行。在这样的示例中,对人工智能和机器学习基础设施(1100)中所包含的一个或多个存储系统的访问模式可以用于获取对人工智能或机器学习流水线的执行的某些洞察。
考虑这样的示例,其中从训练数据的I/O访问模式构建时间序列数据库,并且还从调度程序和GPU构建时间序列数据库。在这样的示例中,该信息可用于确定如何以最佳地利用人工智能和机器学习基础设施(1100)资源的方式来调度事物。在这样的示例中,人工智能或机器学习流水线可以由复杂的执行图来表示,并且调度程序必须决定什么时候运行。在这样的示例中,来自系统堆栈的存储、联网、计算以及任何其他部分的反馈回路可用于通知调度程序并使调度程序能够做出更好的调度决策。实际上,所有这些信息都可以在包括所有这些信息的集中式时间序列数据库中维护。这样,来自第一轮训练的信息可以用于对第二轮训练做出更好的决策。读者将理解,尽管描绘为不同的步骤,但在一些实施例中,监测(1206)对人工智能和机器学习基础设施(1100)所包含的一个或多个存储系统的访问模式可以是如上所述的识别(1203)执行流水线中的瓶颈的一部分。
图12A中描绘的示例方法还包括监测(1208)人工智能或机器学习流水线的数据相关方面。监测(1208)人工智能或机器学习流水线的数据相关方面不仅可包括监测一个或多个GPU所需的某些数据是否可供GPU使用,并且还包括监测数据的性质。例如,在特定AI或机器学习模型的每轮训练期间,数据可以被摄取为AI或机器学习模型的训练数据。在这样的示例中,监测数据的性质可以包括例如监测在每轮训练期间摄取的训练数据以识别异常数据(即与先前接收的用于AI或机器学习模型的训练数据不同的数据)。在这样的示例中,通过监测(1208)人工智能或机器学习流水线的数据相关方面,可以识别对人工智能或机器学习流水线的输入数据的改变。读者将理解,尽管先前的句子涉及监测训练数据,但在生产环境中,可以类似地监测(1208)人工智能或机器学习流水线的数据相关方面。
图12A中描绘的示例方法还包括创建(1210)人工智能或机器学习流水线的审计信息。人工智能或机器学习流水线的审计信息可以包括例如描述被馈送到人工智能或机器学习流水线的数据的信息、在执行人工智能或机器学习流水线时使用的源代码等。考虑这样的示例,其中流水线是用于自动驾驶汽车的人工智能流水线。在这样的示例中,可以维护审计信息以捕获:什么数据被馈送到人工智能流水线(例如,在各个时间点从自动驾驶汽车的传感器接收到什么数据)、什么代码被执行以控制自动驾驶汽车的操作等。审计信息可例如通过将散列函数应用于数据和代码的表示以创建捕获数据和代码的散列值、通过将此类信息存储在区块链中、通过将此类信息存储在数据库中等来创建。
读者将理解,创建(1210)人工智能或机器学习流水线的审计信息还可以利用在每次创建审计信息时仅保留增量的方法。例如,如果在时间0创建了审计信息并且后续在时间1创建了审计信息,则可能不需要保留在时间1和时间0之间没有更改的任何审计信息。例如,如果在时间0使用的代码是在时间0的审计信息中捕获的,并且该代码在时间1不变,则无需在时间1的审计信息中包含在时间1所使用的代码。在这样的示例中,可以将指针或其他工具包括在时间1的审计信息中,以指示在时间1所使用的代码与在先前时间点所使用的代码相同。
图12A中描绘的示例方法还包括创建(1212)人工智能或机器学习流水线的趋势信息。人工智能或机器学习流水线的趋势信息可以包括例如描述模型随时间改进的信息、描述输入到模型中的数据随时间变化的信息等。在这样的示例中,人工智能或机器学习流水线的趋势信息可用于验证某些模型、识别数据漂移、或用于各种其他目的。在这样的示例中,人工智能或机器学习流水线的趋势信息可例如通过显示特定模型随时间改进的工具而显示和呈现给用户。
读者将理解,尽管图12A中描绘的实施例示出了其中一个或多个监测模块(1202a、1202b、1202n)驻留在人工智能和机器学习基础设施(1100)内的实施例,但可以存在其他实施例。实际上,在替代实施例中,一个或多个监测模块(1202a、1202b、1202n)可以驻留在人工智能和机器学习基础设施(1100)外部。一个或多个监测模块(1202a、1202b、1202n)可以驻留在例如与一个或多个人工智能和机器学习基础设施(1100)通信的一个或多个远程服务器上。替代地,一个或多个监测模块(1202a、1202b、1202n)可以驻留在包括可与一个或多个人工智能和机器学习基础设施(1100)进行通信的资源的云环境中。在这样的实施例中,一个或多个人工智能和机器学习基础设施(1100)可以周期性地将遥测数据发送到一个或多个监测模块(1202a、1202b、1202n),包括例如数据遥测、存储遥测、联网遥测、计算遥测等。
为了进一步解释,图12B阐述了示出根据本公开的一些实施例的优化人工智能和机器学习基础设施(1100)的示例方法的流程图。上述人工智能和机器学习基础设施(1100)可以包括一个或多个优化模块(1252a、1252b、1252n)或者可以以其他方式耦合至一个或多个优化模块。优化模块(1252a、1252b、1252n)可以体现为例如在诸如CPU之类的计算机硬件上执行的计算机程序指令。这样的计算机程序指令可以存储在例如包含在人工智能和机器学习基础设施(1100)所包括的存储系统中的一个或多个刀片中,并且由包括在人工智能和机器学习基础设施(1100)所包括的存储系统中的一个或多个CPU来执行。读者将理解,可以构想其他实施例,例如,一个或多个优化模块(1252a、1252b、1252n)驻留在人工智能和机器学习基础设施(1100)所包括的服务器中并由其执行、一个或多个优化模块(1252a、1252b、1252n)驻留在人工智能和机器学习基础设施(1100)与之通信的云计算资源内并由其执行、或以其他方式。
图12B中描绘的示例方法包括确定(1254)特定的人工智能或机器学习流水线是否适合于特定的人工智能和机器学习基础设施(1100)。读者将理解,可以在特定的人工智能和机器学习基础设施(1100)上执行多个人工智能或机器学习流水线。在特定的人工智能和机器学习基础设施(1100)上执行的每个人工智能或机器学习流水线将消耗资源(例如,存储、计算、联网)。假定每个人工智能和机器学习基础设施(1100)具有有限的资源,则每个人工智能和机器学习基础设施(1100)不能支持无限数量的人工智能或机器学习流水线。这样,可能需要确定(1254)特定的人工智能或机器学习流水线是否适合特定的人工智能和机器学习基础设施(1100)。确定(1254)特定的人工智能或机器学习流水线是否适合特定的人工智能和机器学习基础设施(1100)可以例如通过下述操作来执行:确定执行特定的人工智能或机器学习流水线期望所需的资源量,并确定人工智能和机器学习基础设施(1100)是否具有一定量的可用资源以满足特定的人工智能或机器学习流水线对资源的预期需求。
读者将理解,确定(1254)特定的人工智能或机器学习流水线是否适合特定的人工智能和机器学习基础设施(1100)可能比简单地比较可用资源与人工智能或机器学习流水线对资源的预期资源需求要复杂得多。例如,优化模块(1252a、1252b、1252n)可以考虑对当前正在特定的人工智能和机器学习基础设施(1100)上执行的其他人工智能或机器学习流水线的性能影响,以确定即使将特定的人工智能或机器学习流水线添加到特定的人工智能和机器学习基础设施(1100),是否可以维持令人满意的性能度量。在这样的示例中,当前正在特定的人工智能和机器学习基础设施(1100)上执行的其他人工智能或机器学习流水线可能受制于各种服务级别协议、服务质量要求等,它们在将特定的人工智能或机器学习流水线添加到特定的人工智能和机器学习基础设施(1100)时可能被违反,即使特定的人工智能和机器学习基础设施(1100)可以在技术上支持特定的人工智能或机器学习流水线。同样地,特定的人工智能或机器学习流水线本身可能具有附接到特定的人工智能或机器学习流水线的各种性能和服务需求/期望,使得仅支持执行特定的人工智能或机器学习流水线的能力可能是不足的。
读者将进一步了解,在确定(1254)特定的人工智能或机器学习流水线是否适合特定的人工智能和机器学习基础设施(1100)时,可以考虑趋势信息,包括特定的人工智能或机器学习流水线的资源消耗的预期增加或减少,以及当前正在特定的人工智能和机器学习基础设施(1100)上执行的其他人工智能或机器学习流水线的资源消耗的预期增加或减少。以这种方式,确定(1254)可以是前瞻性的,并且避免可预见的资源耗尽。
读者将进一步认识到,在其中人工智能和机器学习基础设施(1100)的集群可用的实施例中,确定(1254)特定的人工智能或机器学习流水线是否适合特定的人工智能和机器学习基础设施(1100)可能是特别感兴趣的。在这样的示例中,尽管多个人工智能和机器学习基础设施(1100)能够支持执行特定的人工智能或机器学习流水线,但可以执行最佳拟合分析以识别可最佳地支持特定的人工智能或机器学习流水线的人工智能和机器学习基础设施(1100)。以这种方式,可以满足负载平衡目标,可以向当前在人工智能和机器学习基础设施(1100)的集群上执行的其他人工智能或机器学习流水线提供更高的服务水平等。
图12B中描绘的示例方法还包括响应于肯定地确定特定的人工智能或机器学习流水线将适合特定的人工智能和机器学习基础设施(1100),发起(1256)在特定的人工智能和机器学习基础设施(1100)上执行特定的人工智能或机器学习流水线。读者理解,在其中人工智能和机器学习基础设施(1100)的集群可用的实施例中,可以在使用最佳拟合分析选择的特定的人工智能和机器学习基础设施(1100)上发起(1256)执行特定的人工智能或机器学习流水线。
图12B中描绘的示例方法还包括确定(1258)特定的人工智能或机器学习作业的估计完成时间。确定(1258)特定的人工智能或机器学习作业的估计完成时间可以例如通过下述操作来执行:考虑可用于特定的人工智能或机器学习作业的资源量来估计完成特定的人工智资源量能或机器学习作业所需的时间量。在这样的示例中,甚至可以向多租户环境中的用户提供特定的人工智能或机器学习作业的估计完成时间,以便用户可以确定是否实际上提交特定的人工智能或机器学习作业。同样地,可以将特定的人工智能或机器学习作业的估计完成时间提供给调度器、或可以从多个人工智能和机器学习基础设施(1100)收集此类信息(例如,在集群环境中)的计算机程序指令的其他模块,以识别应将特定的人工智能或机器学习作业提交给哪个特定的人工智能和机器学习基础设施(1100)。
图12B中描绘的示例方法还包括确定(1260)一个或多个人工智能或机器学习模型随时间改善的程度。确定(1260)一个或多个人工智能或机器学习模型随时间改善的程度可以例如通过将趋势信息用于特定的人工智能或机器学习工作来执行。实际上,确定(1260)一个或多个人工智能或机器学习模型随时间改善的程度可以包括在不同模型或转换之间执行如A/B测试、执行金丝雀测试(canary tesing)以快速且自动地验证特定模型所需的所有事物在执行其他耗时的测试之前已准备好等。实际上,在金丝雀测试的情况下,可以使用深度学习模型,其使用先前的A/B测试的历史来预测学习模型是否通过A/B测试,尤其是对于连续集成流水线。在这样的示例中,可以创建加权分数以显示输出是否可能通过。通过使用这样的技术,可以维持和跟踪各种模型的历史趋势,使得可以维持流水线中的步骤的细节和结果。
图12B中描绘的示例方法还包括生成(1262)模型推荐。读者将理解,鉴于许多人工智能或机器学习流水线可在单个人工智能和机器学习基础设施(1100)上执行,并且进一步鉴于多个人工智能和机器学习基础设施(1100)可被包括在单个群集中,与执行人工智能或机器学习流水线相关的大量信息可能是可用的。可以挖掘此类信息以识别例如在各种数据集上运行良好的模型、使得特定流水线和数据集改善的转换等。如此,可以生成(1262)模型推荐以推荐以某种特定方式警告特定模型、在特定模型中排除或包括特定转换、以某种方式修改转换等。
在图12B中描绘的示例方法中,生成(1262)模型推荐可以通过描述特定的人工智能或机器学习流水线的各个方面的指纹或类似机制、由特定的人工智能或机器学习流水线所摄取的数据等来执行。以这种方式,可以仅基于从人工智能或机器学习流水线收集的信息以及具有类似指纹的数据集来生成推荐。例如,如果特定的转换在摄取具有某些特征的图像的图像识别机器学习流水线中特别有用,则可以仅向摄取具有相似特征的图像的其他图像识别机器学习流水线的所有者推荐这种转换,而这样的推荐将不会生成语音处理人工智能流水线。读者将理解,可以对此类推荐进行匿名处理以屏蔽另一用户的数据、有关其模型的特定信息等。
在图12B中描绘的示例方法中,实施例可以利用自动索引技术,人工智能和机器学习基础设施(1100)可以通过自动索引技术来生成数据向量,以快速且高效地索引和理解大量数据。这样的自动索引技术可以用于识别应从人工智能和机器学习基础设施(1100)中分层的冷数据、将数据迁移到缓存(例如,针对频繁使用的数据)等。通过使用这种自动索引技术,对数据内容的洞察可使得人工智能和机器学习基础设施(1100)作为迁移过程的一部分而自动地将一些不太有用的数据分层到较慢的存储装置,而不是迁移数据并随后确定已经存储在人工智能和机器学习基础设施(1100)中的数据应被分层走。
图12B中描绘的示例方法还包括调整(1212)人工智能或机器学习流水线。在图12B中描绘的示例方法中,调整(1212)人工智能或机器学习流水线可以例如基于检查放置在人工智能和机器学习基础设施(1100)上的工作负载以及一个或多个人工智能或机器学习流水线的属性来以自动化和/或预测的方式执行。例如,可以基于工作负载的特征来修改计算与存储的比率,可以基于对瓶颈的识别来重新平衡流水线(例如,识别瓶颈,识别指示需要额外的流处理服务器的解决方案,以及额外的的流处理服务器自动启动)。同样地,工作负载或流水线可以移动,并且可以采取各种其他措施来调整(1212)人工智能或机器学习流水线。
人工智能和机器学习基础设施(1100)的实施例还可以利用作业调度器和资源管理工具,其可以驻留在人工智能和机器学习基础设施(1100)所包含的(一个或多个)存储系统内。在这样的实施例中,(一个或多个)存储系统可以负责管理对GPU的作业调度以及其他类型的资源管理,其中,这种管理由(一个或多个)存储系统在单个管理平面下执行。此外,这样的管理可以以自动化方式执行,包括基于各个方面(例如,某些数据的涌入、数据内容等)的自动调度。例如,合并前测试应查看已更改的代码,并根据这些更改运行测试。此外,(一个或多个)存储系统可以通过制定决策来实施管理,例如,选择进行训练的特定数据集、运行测试的适当间隔、以及使用新数据持续地重新训练等。
在一些实施例中,人工智能和机器学习基础设施(1100)内的存储系统或其他管理实体还可以基于一些触发(例如,新数据、异常数据)来实施具有连续学习的自动化训练。此外,自动索引可用于识别数据集中的特定类别的数据。例如,图像处理流水线的用户可能想针对狗和猫的图像进行训练,而不理解实际上包括狗、猫、鸟、虫等的图像的数据集。然而,自动索引解决方案将检测数据集中实际包含的每种类别的数据。
在一些实施例中,人工智能和机器学习基础设施(1100)内的存储系统或其他管理实体还可以实现工作流的实时协调。读者将理解,人工智能和机器学习基础设施(1100)不仅仅执行人工智能和机器学习流水线,因为人工智能和机器学习基础设施(1100)还可以运行消息队列系统、数据清理模块等。这样,人工智能和机器学习基础设施(1100)可以被配置为在单个管理平面下处理所有资源的协调。
为了进一步解释,图13阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施(1100)内的存储系统查询处理的示例方法的流程图。上述人工智能和机器学习基础设施(1100)可以包括一个或多个存储系统(1120)和一个或多个计算设备,例如,一个或多个GPU系统(1130)。
传统的机器学习框架通过使用由操作系统提供的文件系统应用编程接口来访问存储装置,其中,操作系统位于物理存储设备或物理存储系统之上。此外,这种传统的配置(其中操作系统在存储系统之上)利用传统的存储系统操作,例如,读取、写入、擦除等。
与传统的机器学习框架相比,图13所示的人工智能和机器学习基础设施(1100)实现一个或多个存储系统(1120),其配置有可直接访问在一个或多个GPU系统(1130)上运行的机器学习框架的应用编程接口(API)。此外,由存储系统(1120)提供的API不仅仅提供传统的存储系统操作的标准阵列,由存储系统(1120)提供的API被配置为提供全范围的查询功能,其使得查询能够在描述存储数据的一个或多个属性的元数据上操作。
作为API功能的示例,(一个或多个)存储系统(1120)可以支持被结构化为数据库查询的查询,例如:
·示例1:“从VOLUME选择路径名,其中路径名以PREFIX开头”
·示例2:“从VOLUME选择路径名、大小,其中路径名以PREFIX开头,并且大小>1GB,按大小降序排序”
·示例3:“从VOLUME选择总和(大小)、所有者,按所有者分组,按大小升序排序”
在示例1中,“选择”查询被解析并解释为从VOLUME所指定的文件系统位置检索具有PREFIX根目录的所有文件,其中,PREFIX可以指定目录路径的一部分,并且其中,VOLUME可以包括针对特定存储系统、文件系统、卷中的一个或多个的规范,或更一般而言,对与特定文件系统或存储器地址空间相对应的地址或位置的指示。在该示例中,在存储系统(1120)包括一个或多个PureTMFlashBladeTM存储系统的情况下,VOLUME可以是“flashbladel://vip/file_system_name”并且PREFIX可以是“testl/results/”。与示例1类似,在被存储系统控制器或由一个或多个存储系统(1120)内的软件和/或硬件所实现的查询处理模块接收时,示例2在从VOLUME中检索根目录为PREFIX的文件,但在该第二示例中,附加参数进一步指定将检索的文件的属性,其中,附加参数包括被指定为大于1GB的数据文件大小,以及指定查询结果将按降序顺序存储的参数。示例3描述了选择存储在VOLUME处的所有文件的示例查询,其中,附加参数指示存储系统通过按“所有者”属性对文件进行分组来处理VOLUME处的所有文件的查询结果,并且其中,针对给定所有者拥有的每组文件计算总和,从而生成VOLUME内的文件的所有所有者的列表,其中,该列表针对每个所有者显示所拥有的所有文件的文件存储大小的总和,并且其中,所有者列表根据它们各自的文件存储大小的总和按升序排列。
作为另一示例,由(一个或多个)存储系统(1120)实现的API可以提供调用以枚举存储在给定文件系统内、或文件系统的特定目录内的文件对象或数据对象的集合。以这种方式,(一个或多个)存储系统(1120)可以执行否则将由一个或多个GPU系统(1130)执行的计算工作量,在数百万个数据对象的情况下,迅速变为大量的处理时间。
在一些示例中,在(一个或多个)存储系统(1120)提供没有中间操作系统层的可访问文件系统的情况下,(一个或多个)存储系统(1120)可以被配置为多路径客户端,其中,多个GPU系统(1130)然后可以同时访问存储在(一个或多个)存储系统(1120)上的数据。
更一般地,对于存储在存储系统(1120)内的多个数据对象,并且对于用给定数据对象的相应元数据描述的任何给定数据对象属性集,查询可以指定参数、命令、属性和逻辑运算符,其被组合应用以从所有多个数据对象中选择数据对象子集,使得每个数据对象子集的元数据都满足查询规范。以这种方式,存储系统(1120)API可以支持用于从所存储的数据对象中选择数据对象的多种类型的查询。
图13中描绘的示例方法包括在(一个或多个)存储系统(1120)处存储(1302)分别包括数据和元数据的多个数据对象(1352a-1352n),其中,元数据描述一个或多个数据属性。作为示例实施方式,(一个或多个)存储系统(1120)可以存储数据对象(1352a-1352n),其中,每个给定的数据对象包括相应的数据和相应的元数据,其中,如图13所示,数据对象(1352a)包括数据(1360a)和元数据(1362a),数据对象(1352b)包括数据(1360b)和元数据(1362b),依此类推,直到包括数据(1360n)和元数据(1362n)的数据对象(1352n),其中,n为仅受(一个或多个)存储系统(1120)内的可用存储空间量限制的任意值。
图13中描绘的示例方法还包括在(一个或多个)存储系统(1120)处从计算设备接收(1304)指定一个或多个数据属性的查询(1354)。在(一个或多个)存储系统(1120)处从计算设备接收(1304)指定一个或多个数据属性的查询(1354)可以通过查询处理模块或控制器经由通信结构接收包括查询(1354)和一个或多个参数的消息来实现,该一个或多个参数使得该消息符合如上所述的由(一个或多个)存储系统(1120)提供的API。此外,在该示例中,计算设备可以是(一个或多个)GPU系统(1130)中的GPU;然而,在其他示例中,计算设备可以是通用处理CPU。未示出的通信结构可以是被配置为实现通信网络的连接网络设备的集合,如上文参考图11A-11D所描述的。
图13中描绘的示例方法还包括在(一个或多个)存储系统(1120)处生成(1306)包括多个数据对象(1352a-1352n)中的一个或多个以使得数据集(1356)中的每个数据对象共享由查询(1354)指定的一个或多个数据属性的数据集(1356)。在(一个或多个)存储系统(1120)处生成(1306)包括多个数据对象(1352a-1352n)中的一个或多个以使得数据集(1356)中的每个数据对象共享由查询(1354)指定的一个或多个数据属性的数据集(1356)可以通过(一个或多个)存储系统(1120)的查询处理模块或控制器搜索每个所存储的数据对象的索引来实现,其中,每个给定数据对象的元数据被访问,以根据一个或多个数据属性来确定元数据是否描述给定数据对象的相应数据的满足查询的属性,其中,一个或多个数据属性可以是接收(1304)到的消息的参数。以这种方式,对于满足查询的每个数据对象,可以将该数据对象添加到数据集(1356),其中,可以通过创建与数据集(1356)相对应的元数据来实现添加数据对象,该元数据引用已被添加到数据集(1356)的每个数据对象。在遍历每个所存储的数据对象之后,可以定义数据集(1356)并准备发送。在一些示例中,可以响应于在完成结果(1454)的整个集合之前生成结果的一个或多个部分来发送部分结果。
图13中描绘的示例方法还包括将多个数据对象中的一个或多个数据对象的数据集(1356)从(一个或多个)存储系统(1120)传送(1308)到计算设备。将多个数据对象(1352a-1352n)中的一个或多个数据对象的数据集(1356)从(一个或多个)存储系统(1120)传送(1308)到计算设备可以通过查询处理模块或控制器经由通信结构将包括数据集(1356)的消息发送到计算设备来实现,如上所述,在该示例中,计算设备可以是一个或多个GPU系统(1130)。上面参考接收(1304)查询(1354)并进一步参考图11A-11D描述了通信结构。
为了进一步解释,图14阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施(1100)内的存储系统查询处理的示例方法的流程图。图14中描绘的示例方法类似于图13中描绘的示例方法,因为图14中描绘的示例方法也包括:在(一个或多个)存储系统(1120)处存储(1302)分别包括数据和元数据的多个数据对象(1352a-1352n),其中,元数据描述一个或多个数据属性;在(一个或多个)存储系统(1120)处从计算设备接收(1304)指定一个或多个数据属性的查询(1354);在(一个或多个)存储系统(1120)处生成(1306)包括多个数据对象(1352a-1352n)中的一个或多个以使得数据集(1356)中的每个数据对象共享由查询(1354)指定的一个或多个数据属性的数据集(1356);以及将多个数据对象中的一个或多个数据对象的数据集(1356)从(一个或多个)存储系统(1120)传送(1308)到计算设备。
然而,图14中描绘的示例方法还包括响应于接收到指定一个或多个参数的功能(1452)以及缓存结果的指示,缓存(1402)将功能(1452)应用于多个数据对象中的一个或多个数据对象的结果。如以上参考图13所述,接收功能(1452)可以通过跨通信结构接收消息来实现,其中,该消息根据由(一个或多个)存储系统(1120)提供的支持API。此外,响应于接收到功能(1452),(一个或多个)存储系统(1120)的控制器或查询处理模块可以识别一个或多个计算操作、存储系统操作,以根据功能(1452)的一个或多个参数来执行指定的功能(1452),其中,响应于对缓存结果的指示,(一个或多个)存储系统(1120)的查询处理模块或控制器可以缓存执行功能(1452)的结果。作为一个示例,功能(1452)可以是JPEG解码、随机播放、文件组合、整形矩阵/张量、以及用于转换供机器学习系统使用的数据的任何其他通用功能。在该示例中,指示可以是API参数,该API参数在存在时指示(一个或多个)存储系统(1120)对正在传递的查询或功能的结果进行缓存。给定这样的指示,(一个或多个)存储系统(1120)可以缓存结果(1454),并跟踪对作为应用功能的基础的一个或多个数据对象的任何修改,其中,如果一个或多个数据对象保持不变,则缓存结果(1454)保持有效,并且如果一个或多个数据对象以将改变结果(1454)的方式被修改,则缓存结果(1454)被无效或清除。在其他示例中,(一个或多个)存储系统(1120)可以确定查询或访问数据集的模式,并且预测性地确定以缓存相应的数据集。例如,(一个或多个)存储系统(1120)可以识别与机器学习训练会话的开始相对应的一系列操作,并基于针对训练会话的数据的一个或多个查询或访问来预测可能随后请求的一个或多个数据集结果,并且作为响应,缓存一个或多个数据集结果。
在一些实施方式中,缓存结果(1454)可以包括一个或多个数据对象的重复副本。然而,在其他示例中,缓存结果(1454)可以是引用包括在缓存结果(1454)中的一个或多个数据对象的元数据。此外,在一些示例中,缓存结果(1454)可以动态地更新,其中,存储系统的控制器可以维护或存储缓存结果与从其生成缓存结果的底层一个或多个数据对象之间的关联,使得如果对一个或多个数据对象进行了修改,则存储系统的控制器将重新应用用于生成现有的缓存结果的查询或功能,以基于修改后的一个或多个数据对象来生成一组更新的缓存结果。以此方式,如果在某个稍后的时间点接收到查询或功能,则存储系统可以使与所接收的查询或功能相对应的结果在缓存内可用,而无需访问所存储的一个或多个数据对象,并且无需响应于接收到查询或功能来生成该查询或功能的结果。作为示例,存储系统可以接收查询,例如,上述查询,其中,该查询请求特定用户的存储空间之和,并且该查询还可以包括指示保持结果被更新的标志,作为响应,存储系统可以响应于特定用户的文件的大小的每次改变来更新查询结果。
在其他实施方式中,由存储系统提供的API可以提供指示描述规则或事件的信息的输入,该规则或事件可以用作生成和缓存结果集的基础。例如,可接收到查询或功能调用,并且该查询或功能调用可以指示将多次请求经更新结果的信息,其中,该指示可以进一步指定请求周期、预期的未来请求的数量、在其之后不需要进一步更新的时间窗口、或者对调度的一般指示(可包括要执行特定事件的调度时间)中的一个或多个。在其他示例中,查询或功能调用可以指定定义阈值的规则,使得如果超过阈值,则可发生特定事件。以此方式,例如,如果GPU正在使用TensorFlow库,则GPU可以向存储系统提供未来可能重复地期望给定的功能查询的指示,允许GPU提前调度工作,从而允许GPU可以保持完整的结果缓冲区,而不会受到存储系统的任何延迟。
图14的示例方法还包括经由API接收(1404)功能(1452)的另一调用以及一个或多个参数,其中,功能(1452)被应用于作为功能(1452)的先前调用的相同的一个或多个数据对象。经由API接收(1404)功能(1452)的另一个或附加调用以及一个或多个参数可以如上面第一次关于接收(1402)功能(1452)所讨论的来实现。
图14的示例方法还包括响应于确定多个数据对象中的一个或多个未改变,传送将功能(1452)应用于多个数据对象中的一个或多个的缓存结果(1454)。确定多个数据集中的一个或多个没有改变可以通过(一个或多个)存储系统(1120)进行检查以查看先前缓存的结果是否有效来实现,其中,(一个或多个)存储系统(1120)可以通过跟踪对任何存储的数据对象的任何修改是否影响先前从其生成任何缓存结果的任何数据对象来确定有效性。在该示例中,如果缓存结果(1454)有效,则(一个或多个)存储系统(1120)可以发送(1406)缓存结果(1454),而不是通过将功能应用于一个或多个数据对象来生成结果。发送(1406)缓存结果(1454)可以如上面传送(1308)数据集所描述的来实现。
以这种方式,如果将功能应用于数据集,并且该数据集是不可变的或未改变,则(一个或多个)存储系统(1120)可以通过使用先前缓存的结果来避免重新计算所请求的结果。
为了进一步解释,图15阐述了示出根据本公开的一些实施例的人工智能和机器学习基础设施(1100)内的存储系统查询处理的示例方法的流程图。图15中描绘的示例方法类似于图13中描绘的示例方法,因为图15中描绘的示例方法也包括:在(一个或多个)存储系统(1120)处存储(1302)分别包括数据和元数据的多个数据对象(1352a-1352n),其中,元数据描述一个或多个数据属性;在(一个或多个)存储系统(1120)处从计算设备接收(1304)指定一个或多个数据属性的查询(1354);在(一个或多个)存储系统(1120)处生成(1306)包括多个数据对象(1352a-1352n)中的一个或多个以使得数据集(1356)中的每个数据对象共享由查询(1354)指定的一个或多个数据属性的数据集(1356);以及将多个数据对象中的一个或多个数据对象的数据集(1356)从(一个或多个)存储系统(1120)传送(1308)到计算设备。
然而,图15中描绘的示例方法还包括在(一个或多个)存储系统(1120)处缓存(1502)数据集(1356)。缓存(1502)数据集(1356)可以通过(一个或多个)存储系统(1120)响应查询(1354)提供的参数来实现,其中,该参数向(一个或多个)存储系统(1120)指示查询的结果将被缓存。此外,缓存(1502)数据集(1356)可以包括(一个或多个)存储系统(1120)创建将查询与数据集结果相对应的元数据索引,并且其中,查询元数据还包括对是否有包括在数据集内的任何数据对象由于处理查询而被修改的指示。此外,响应于接收修改任何存储的数据对象的操作,(一个或多个)存储系统(1120)可以参考元数据索引以更新元数据,以指示修改是否导致给定的缓存数据集无效。例如,重复数据删除操作可能会产生修改的数据对象,但没有对底层存储数据的任何修改,因此,重复数据删除操作将不会使包括经重复数据删除的数据对象的缓存数据集无效。然而,如果数据对象被至少部分地覆盖,则包含该数据对象的缓存数据集可无效。此外,在一些示例中,(一个或多个)存储系统(1120)可以默认地缓存每个查询的数据集结果,而无需来自调用计算设备的指示。
图15的示例方法还包括在(一个或多个)存储系统(1120)处接收(1504)对指定一个或多个数据属性的查询的另一调用。在(一个或多个)存储系统(1120)处接收(1504)对指定一个或多个数据属性的查询的另一调用可以类似于如参考图13所述的在(一个或多个)存储系统(1120)处接收(1304)指定一个或多个数据属性的查询(1354)来实现。
图15的示例方法还包括响应于确定多个数据对象中的一个或多个没有改变而使得它们与查询所指定的一个或多个数据属性不匹配,传送(1506)缓存的数据集(1356)。确定多个数据对象中的一个或多个没有改变可以通过(一个或多个)存储系统(1120)检查上述元数据索引以查看先前缓存的结果是否有效来实现,其中,(一个或多个)存储系统(1120)可以通过跟踪对任何存储的数据对象的任何修改是否影响先前从其生成任何缓存结果的任何数据对象来确定有效性。
在该示例中,如果缓存的数据集(1356)有效,则(一个或多个)存储系统(1120)可以传送(1506)缓存的数据集(1356),而不是通过执行查询(1354)来生成数据集。传送(1506)缓存的数据集(1356)可以如上面关于传送(1308)数据集所描述的来实现。
以此方式,如果接收到相同的查询,并且来自先前查询的结果数据集是不可变的或未改变,则(一个或多个)存储系统(1120)可以通过使用先前缓存的结果来避免重新计算所请求的查询。
为了进一步解释,图16阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(1604)和一个或多个GPU服务器(1618)的人工智能基础设施(1602)中的数据转换卸载的示例方法的流程图。尽管不太详细地描述,但图16所示的存储系统(1604)可以类似于上述存储系统,因为图16所示的存储系统(1604)可以包括上述存储系统中所包含的组件的任意组合。图16所示的GPU服务器(1618)可以体现为例如服务器、工作站或其他计算设备,其专用于使用图形处理单元上的通用计算(‘GPGPU’)来加速深度学习应用、机器学习应用、人工智能应用、或类似应用。尽管未在图16中明确示出,但是存储系统(1604)和GPU服务器(1618)可以耦合以通过一个或多个数据通信链路进行数据通信。读者将理解,图16中描绘的人工智能基础设施(1602)可以类似于上述的人工智能和机器学习基础设施。
图16中描绘的人工智能基础设施(1602)可以被配置为支持执行一个或多个机器学习模型。这样的机器学习模型可以包括在一个或多个GPU服务器(1608)上执行的一个或多个机器学习算法。这样的机器学习算法可以包括有监督学习算法,例如,线性回归算法、逻辑回归算法、决策树算法等。这样的机器学习算法还可以包括无监督学习算法,例如,先验算法、k-均值聚类算法等。同样地,这样的机器学习算法还可以包括增强学习算法,例如,马尔可夫决策过程、Q学习算法等。
在本文描述的示例中,可以向人工智能基础设施(1602)所支持的机器学习模型提供存储在人工智能基础设施(1602)所包括的一个或多个存储系统(1604)内的输入数据。这样,可以将存储在人工智能基础设施(1602)所包括的一个或多个存储系统(1604)内的输入数据提供给GPU服务器(1608),使得GPU服务器(1608)可以利用输入数据作为在GPU服务器(1608)上执行的机器学习算法的输入。然而,读者将理解,不同的机器学习模型可能需要不同格式、包含不同类型数据等的输入数据。例如,第一机器学习模型可以利用向量作为输入,而第二机器学习模型可以利用矩阵作为输入。
图16中描绘的示例方法包括在存储系统(1604)内存储(1608)数据集(1606)。图16中描绘的数据集(1606)可以体现为例如文件、对象或其他数据的集合,其共同形成用于训练机器学习模型的一组数据。然而,图16中描绘的数据集(1606)可能不是可被机器学习模型有效地使用的格式。例如,数据集(1606)中的对象可包含不具有预定义数据模型或者未以预定义方式被组织的非结构化数据。这样的非结构化数据可以是例如大量文本数据,其还包含诸如日期、数字和事实之类的数据。相对于以字段形式存储在数据库中、标注在文档中、或以其他方式结构化的数据,使用传统程序可能难以理解此类非结构化数据。替代地,数据集(1606)中的对象可包含未标记数据,其含义不能被机器学习模型容易地识别。读者将理解,在其他示例中,数据集(1606)的内容可能被无效地格式化、标记,或以其他方式不能用作机器学习模型的训练数据。在图16中描绘的示例方法中,存储(1608)数据集(1606)可以例如通过标识一个或多个数据源、从一个或多个数据源获取数据、创建包括从数据源获取的所有数据的单个数据集、以及将数据集(1606)的内容存储在存储系统(1604)所包括的存储设备内来执行。
考虑其中数据集(1606)被体现为由存储系统(1604)生成的日志文件的集合的示例。在这样的示例中,每个日志文件中的每一行都可以是非结构化的,因为每一行是以人类可读格式的方式创建的。这样的非结构化数据对于机器学习模型的使用可能是低效的,因为非结构化数据可能未通过能够容易地搜索数据的预定义数据模型或模式进行结构化。包含非结构化数据的数据集(1606)的其他示例可以包括例如包括视频文件、图像文件、音频文件等的数据集。
图16中描绘的示例方法还包括根据要在GPU服务器(1618)上执行的一个或多个机器学习模型(1616)来识别(1610)应用于数据集(1606)的一个或多个转换。应用于数据集(1606)的一个或多个转换可以包括例如:执行缩放转换以标准化数据的自变量或特征的范围、执行分解转换以将表示复杂概念的特征分解为组成部分(例如,分解具有天和时间分量的日期为天组成部分的小时)、执行聚合转换以将多个特征聚合到单个特征中(例如,每次客户登录到系统中的实例都可以聚合到标识登录数量的计数功能中)等。读者将理解,应用于数据集(1606)的特定转换不仅可以是数据集(1606)本身的格式的函数,而且要应用的特定转换也可以是在GPU服务器(1618)上执行的一个或多个机器学习模型(1616)的预期输入的函数。应用于数据集(1606)的一个或多个转换还可以包括例如通过从非结构化格式中提取信息并以结构化格式填充数据来将非结构化数据转换为结构化数据,将第一格式的结构化数据转换为一个或多个机器学习模型(1616)所期望的第二格式等。
图16中描绘的示例方法还包括由存储系统(1604)根据一个或多个转换来生成(1612)转换数据集(1614)。转换数据集(1614)可以体现为例如可以用作机器学习模型的输入的向量、可以用作机器学习模型的输入的张量等。读者将理解,在实际生成(1612)转换数据集(1614)之前,存储系统(1604)可以执行其他操作以准备数据集(1606),以供人工智能基础设施(1602)所支持的机器学习模型使用。例如,存储系统(1604)可以选择要包括在转换数据集(1614)中的数据、对数据进行格式化以确保数据格式对于从不同来源接收的数据是一致的、清理数据以丢弃不需要的数据、去除重复的数据、删除不可用的数据、处理丢失的数据、或执行其他预处理操作。
读者将理解,通过使存储系统(1604)执行上述步骤,实际执行机器学习算法的GPU服务器(1618)可以避免执行准备数据以供机器学习算法使用的高计算要求的任务,因为接收、清理、预处理和转换数据的过程可以由存储系统(1604)而不是GPU服务器(1618)执行。这样,可以保留GPU服务器(1618)所提供的计算资源以实际上针对已经准备好的转换数据集(1614)执行机器学习算法,而不是使GPU服务器(1618)所提供的计算资源负担准备数据以供机器学习算法提取的任务。
为了进一步解释,图17阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(1604)和一个或多个GPU服务器(1618)的人工智能基础设施(1602)中的数据转换卸载的另一示例方法的流程图。图17中描绘的示例方法类似于图16中描绘的示例方法,因为图17中描绘的示例方法也包括:在存储系统(1604)内存储(1608)数据集(1606)、根据要在GPU服务器(1618)上执行的一个或多个机器学习模型(1616)来识别(1610)应用于数据集(1606)的一个或多个转换、以及由存储系统(1604)根据一个或多个转换来生成(1612)转换数据集(1614)。
图17中描绘的示例方法还包括将转换数据集(1614)从存储系统(1604)传送(1702)到一个或多个GPU服务器(1618)。转换数据集(1614)可以例如经由存储系统(1604)和一个或多个GPU服务器(1618)之间的一个或多个数据通信链路来从存储系统(1604)传送(1702)到一个或多个GPU服务器(1618),其可以如上面更详细描述的来以许多不同的方式实现。在图17中描绘的示例方法中,将转换数据集(1614)从存储系统(1604)传送(1702)到一个或多个GPU服务器(1618)还可以包括将转换数据集(1614)从一个或多个存储系统直接传送(1704)到GPU服务器(1618)上的应用存储器。
将转换数据集(1614)从一个或多个存储系统直接传送(1704)到GPU服务器(1618)上的应用存储器可以例如通过将转换数据集(1614)经由RDMA从存储系统(1604)直接传送到GPU服务器(1618)来执行。经由RDMA传送转换数据集(1614)可以例如通过由包括在存储系统(1604)中的网络适配器将转换数据集(1614)从存储系统(1604)中的存储器直接传送到一个或多个GPU服务器(1618)内的应用存储器来执行。通过使用这样的RDMA传送,可以绕过操作系统和GPU服务器(1618)内的GPU,使得GPU服务器(1618)中的GPU不需要任何工作(如非RDMA传送(例如,基于消息的传送)中所要求的)即可获得转换数据集(1614)。读者将理解,RDMA传送的使用是可以使实际上执行机器学习算法的GPU服务器(1618)避免执行获取转换数据集(1614)的高计算要求的任务的附加机制。这样,可以保留GPU服务器(1618)所提供的计算资源以实际上针对已经准备好的转换数据集(1614)执行机器学习算法而不是使GPU服务器(1618)所提供的计算资源负担获取转换数据集(1614)的任务。读者将理解,在其他实施例中,将转换数据集(1614)从一个或多个存储系统直接传送(1704)到GPU服务器(1618)上的应用存储器可以例如通过使用NFS或其他适当的技术来执行。
图17中描绘的示例方法还包括由一个或多个GPU服务器(1618)使用转换数据集(1614)作为输入来执行(1706)与机器学习模型(1616)相关联的一种或多种机器学习算法。读者将理解,通过使用转换数据集(1614)作为输入来执行(1706)与机器学习模型(1616)相关联的一种或多种机器学习算法而生成的输出可以根据所执行的特定机器学习模型而变化。
为了进一步解释,图18阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(1604)和一个或多个GPU服务器(1618)的人工智能基础设施(1602)中的数据转换卸载的另一示例方法的流程图。图18所示的示例方法类似于图16和图17所示的示例方法,因为图18所示的示例方法也包括:在存储系统(1604)内存储(1608)数据集(1606)、根据要在GPU服务器(1618)上执行的一个或多个机器学习模型(1616)来识别(1610)应用于数据集(1606)的一个或多个转换、由存储系统(1604)根据一个或多个转换来生成(1612)转换数据集(1614)、将转换数据集(1614)从存储系统(1604)传送(1702)到一个或多个GPU服务器(1618)、以及由一个或多个GPU服务器(1618)使用转换数据集(1614)作为输入来执行(1706)与机器学习模型(1616)相关联的一种或多种机器学习算法。
图18中描绘的示例方法还包括由统一管理平面(1802)调度(1804)应用于数据集(1606)的对一个或多个存储系统(1604)的一个或多个转换。图18所示的统一管理平面(1802)可以体现为例如在诸如一个或多个CPU之类的计算机硬件上执行的计算机程序指令的模块。统一管理平面(1802)可以被配置为监测和管理人工智能基础设施(1602)内的所有元件,包括存储系统(1604)、GPU服务器(1618)、以及实现存储系统(1604)和GPU服务器(1618)之间的数据通信的任何其他设备(例如,网络交换机)。统一管理平面(1802)可以被配置为执行任务,例如,调度诸如由一个或多个存储系统(1604)执行的一个或多个数据集转换之类的任务、调度诸如在一个或多个GPU服务器(1618)上执行一个或多个机器学习算法之类的任务、管理可用于由一个或多个存储系统(1604)执行一个或多个数据集转换的存储系统资源量、管理可用于在一个或多个GPU服务器(1618)上执行一种或多种机器学习算法的GPU服务器资源量、管理一个或多个存储系统(1604)与一个或多个GPU服务器(1618)之间的数据路径等。
读者将理解,由于统一管理平面(1802)通过监测存储系统(1604)和GPU服务器(1618)两者而具有对存储系统(1604)和GPU服务器(1618)两者的洞察,因此统一管理平面(1802)可以以优化存储系统(1604)和GPU服务器(1618)之间的交互,并且还优化支持执行机器学习模型所需的一系列步骤的方式来管理存储系统(1604)和GPU服务器(1618)两者。实际上,统一管理平面(1802)可以被配置为基于各种因素(例如,某些数据、数据内容等的涌入)来在存储系统(1604)和GPU服务器(1618)上执行任务的自动调度。例如,统一管理平面(1802)可以被配置为决定特定机器学习模型应该针对特定数据集进行训练,统一管理平面(1802)可以被配置为决定用于运行测试以及利用新数据连续地重新训练的适当间隔等。在这样的示例中,统一管理平面(1802)可以被配置为基于一些触发(例如,新数据、异常数据)来支持具有连续学习的自动化训练。
在图18所示的示例方法中,统一管理平面(1802)被配置为调度(1804)应用于数据集(1606)的对一个或多个存储系统(1604)的一个或多个转换,并且还被配置为调度(1806)由一个或多个GPU服务器(1618)执行与机器学习模型(1616)相关联的一种或多种机器学习算法。在这样的示例中,统一管理平面(1802)可以被配置为与一个或多个存储系统(1604)上的调度器以及一个或多个GPU服务器(1618)上的调度器一起工作。统一管理平面(1802)可以被配置为例如通过以下操作来与一个或多个存储系统(1604)上的调度器以及一个或多个GPU服务器(1618)上的调度器一起工作:向存储系统(1604)发送被存储系统(1604)理解为调度指令的一个或多个消息、向GPU服务器(1618)发送被GPU服务器(1618)理解为调度指令的一个或多个消息等。在这样的示例中,存储系统(1604)和GPU服务器(1618)可以经由API或某种其他机制被配置为从统一管理平面(1802)接收调度指令,并通过一个或多个本地调度器来实现从统一管理平面(1802)接收的调度指令。
为了进一步解释,图19阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(1604)和一个或多个GPU服务器(1618)的人工智能基础设施1602)中的数据转换卸载的另一示例方法的流程图。图19中描绘的示例方法类似于图16中描绘的示例方法,因为图19中描绘的示例方法也包括:在存储系统(1604)内存储(1608)数据集(1606)、根据要在GPU服务器(1618)上执行的一个或多个机器学习模型(1616)来识别(1610)应用于数据集(1606)的一个或多个转换、以及由存储系统(1604)根据一个或多个转换来生成(1612)转换数据集(1614)。
图19中描绘的示例方法还包括由存储系统(1604)维护(1904)描述数据集(1606)、应用于数据集(1606)的一个或多个转换、以及转换数据集(1614)的信息。维护(1904)描述数据集(1606)、应用于数据集(1606)的一个或多个转换、以及转换数据集(1614)的信息可以例如通过由诸如上述统一管理平面(1802)之类的实体在转换日志或类似数据结构中维护描述数据集(1606)、应用于数据集(1606)的一个或多个转换、以及转换数据集(1614)的信息来执行。在这样的示例中,存储系统(1604)不仅可以维护描述数据集(1606)、应用于数据集(1606)的一个或多个转换、以及转换数据集(1614)的信息,而且存储系统(1604)实际上可以保留转换数据集的副本(1614)。这样,存储系统(1604)可以用作转换缓存,使得不需要重复转换数据集(1606)以供由机器学习模型(1616)使用的大计算量过程。读者将理解,鉴于不同的机器学习模型可能需要相同的转换并且同一机器学习模式的不同实例可能需要相同的转换的事实,通过维护描述数据集(1606)、应用于数据集(1606)的一个或多个转换、转换数据集(1614)的信息,以及转换数据集(1614)本身,存储系统(1604)可以用作转换缓存,其存在可以防止GPU服务器(1618)内的GPU被重复地分配转换数据集(1606)以供由GPU服务器(1618)所支持的机器学习模型(1616)使用的大计算量过程。
图19中描绘的示例方法还包括接收(1902)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第一请求(1912)。可以例如从上述一个或多个GPU服务器(1618)、统一管理平面(1802)等接收(1902)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第一请求(1912)。可以响应于用户或诸如统一管理平面(1802)之类的系统实体调度或以其他方式发起执行特定机器学习模型而生成将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第一请求(1912)。
图19中描绘的示例方法还包括将转换数据集(1614)从存储系统(1604)传送(1906)到一个或多个GPU服务器(1618)。转换数据集(1614)可以例如经由存储系统(1604)和一个或多个GPU服务器(1618)之间的一个或多个数据通信链路从存储系统(1604)传送(1906)到一个或多个GPU服务器(1618),其可以如上面更详细描述的来以许多不同的方式实现。替代地,转换数据集(1614)可以经由RDMA从存储系统(1604)传送(1906)到一个或多个GPU服务器(1618),如上面更详细描述的。
图19中描绘的示例方法还包括接收(1908)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第二请求(1914)。可以例如从上述一个或多个GPU服务器(1618)、统一管理平面(1802)等接收(1908)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第二请求(1914)。可以响应于用户或诸如统一管理平面(1802)之类的系统实体调度或以其他方式发起执行特定机器学习模型而生成将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第二请求(1914)。
读者将理解,可能由于多种原因而针对同一转换数据集(1614)发出多个请求(1912、1914)。例如,可以响应于GPU服务器(1618)发起执行将在转换数据集(1614)上训练的特定机器学习模型而接收(1902)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第一请求(1912)。在这样的示例中,在训练完成之后,可以对特定机器学习模型进行改变,作为改进特定机器学习模型的工作的一部分。一旦已经对特定机器学习模型进行了改变,则可以响应于GPU服务器(1618)发起执行将在转换数据集(1614)上进行训练的更新机器学习模型而接收(1908)将转换数据集(1614)传送到一个或多个GPU服务器(1618)的第二请求(1914)。类似地,例如,当第一GPU服务器将要执行在转换数据集(1614)上训练的特定机器学习模型的第一版本,第二GPU服务器差不多同时地执行在转换数据集(1614)上训练的特定机器学习模型的第二版本时,可以针对同一转换数据集(1614)发出多个请求(1912、1914)。读者将理解,由于一个或多个存储系统(1604)可以将转换数据集(1614)存储在存储系统(1604)本身内,因此存储系统(1604)和GPU服务器(1618)都不需要重复先前已执行的转换。
图19中描绘的示例方法还包括将转换数据集(1614)从存储系统(1604)传送(1910)到一个或多个GPU服务器(1618),而不执行数据集(1606)的额外转换。转换数据集(1614)可以例如经由存储系统(1604)和一个或多个GPU服务器(1618)之间的一个或多个数据通信链路从存储系统(1604)传送(1910)到一个或多个GPU服务器(1618),其可以如上面更详细描述的来以许多不同的方式实现。替代地,转换数据集(1614)可以经由RDMA从存储系统(1604)传送(1910)到一个或多个GPU服务器(1618),如上面更详细描述的。然而,在任一实施例中,存储系统(1604)可以响应第二请求(1914)而不执行数据集(1606)的额外转换。
为了进一步解释,图20阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(2004)和一个或多个GPU服务器(2018)的人工智能基础设施(2002)中的数据转换缓存的示例方法的流程图。尽管不太详细地描述,但图20所示的存储系统(2004)可以类似于上述存储系统,因为图20所示的存储系统(2004)可以包括上述存储系统中包含的组件的任意组合。图20所示的GPU服务器(2018)可以体现为例如服务器、工作站或其他计算设备,其专用于使用图形处理单元上的通用计算(‘GPGPU’)来加速深度学习应用、机器学习应用、人工智能应用、或类似应用。尽管未在图20中明确示出,但是存储系统(2004)和GPU服务器(2018)可以耦合以通过一个或多个数据通信链路进行数据通信。读者将理解,图20中描绘的人工智能基础设施(2002)可以类似于上述的人工智能和机器学习基础设施。
图20中描绘的人工智能基础设施(2002)可以被配置为支持执行一个或多个机器学习模型。这样的机器学习模型可以包括在一个或多个GPU服务器(2008)上执行的一个或多个机器学习算法。这样的机器学习算法可以包括有监督学习算法,例如,线性回归算法、逻辑回归算法、决策树算法等。这样的机器学习算法还可以包括无监督学习算法,例如,先验算法、k-均值聚类算法等。同样地,这样的机器学习算法还可以包括增强学习算法,例如,马尔可夫决策过程、Q学习算法等。
在本文描述的示例中,可以向人工智能基础设施(2002)所支持的机器学习模型提供存储在人工智能基础设施(2002)所包括的一个或多个存储系统(2004)内的输入数据。这样,可以将存储在人工智能基础设施(2002)所包括的一个或多个存储系统(2004)内的输入数据提供给GPU服务器(2008),使得GPU服务器(2008)可以利用输入数据作为在GPU服务器(2008)上执行的机器学习算法的输入。然而,读者将理解,不同的机器学习模型可能需要不同格式、包含不同类型数据等的输入数据。例如,第一机器学习模型可以利用向量作为输入,而第二机器学习模型可以利用矩阵作为输入。
图20中描绘的示例方法包括根据要在GPU服务器(2018)上执行的一个或多个机器学习模型(2016)来识别(2008)应用于数据集(2006)的一个或多个转换。图20中描绘的数据集(2006)可以体现为例如文件、对象或其他数据的集合,其共同形成用于训练机器学习模型的一组数据。然而,图20中描绘的数据集(2006)可能不是可被机器学习模型有效地使用的格式。例如,数据集(2006)中的对象可包含不具有预定义数据模型或者未以预定义方式被组织的非结构化数据。这样的非结构化数据可以是例如大量文本数据,其包含诸如日期、数字和事实之类的数据。相对于以字段形式存储在数据库中、标注在文档中、或以其他方式结构化的数据,使用传统程序可能难以理解此类非结构化数据。替代地,数据集(2006)中的对象可包含未标记数据,其含义不能被机器学习模型容易地识别。读者将理解,在其他示例中,数据集(2006)的内容可能被无效地格式化、标记,或以其他方式不能用作机器学习模型的训练数据。
考虑其中数据集(2006)被体现为由存储系统(2004)生成的日志文件的集合的示例。在这样的示例中,每个日志文件中的每一行都可以是非结构化的,因为每一行是以人类可读格式的方式创建的。这样的非结构化数据对于机器学习模型的使用可能是低效的,因为非结构化数据可能未通过能够容易地搜索数据的预定义数据模型或模式进行结构化。包含非结构化数据的数据集(2006)的其他示例可以包括例如包括视频文件、图像文件、音频文件等的数据集。
在图20描绘的示例方法中,应用于数据集(2006)的一个或多个转换可以包括例如:执行缩放转换以标准化数据的自变量或特征的范围、执行分解转换以将表示复杂概念的特征分解为组成部分(例如,分解具有天和时间分量的日期为天组成部分的小时)、执行聚合转换以将多个特征聚合到单个特征中(例如,每次客户登录到系统中的实例都可以聚合到标识登录数量的计数功能中)等。读者将理解,应用于数据集(2006)的特定转换不仅可以是数据集(2006)本身的格式的函数,而且要应用的特定转换也可以是在GPU服务器(2018)上执行的一个或多个机器学习模型(2016)的预期输入的函数。应用于数据集(2006)的一个或多个转换还可以包括例如通过从非结构化格式中提取信息并以结构化格式填充数据来将非结构化数据转换为结构化数据,将第一格式的结构化数据转换为一个或多个机器学习模型(2016)所期望的第二格式等。
图20中描绘的示例方法还包括根据一个或多个转换来生成(2010)转换数据集(2004)。转换数据集(2014)可以体现为例如可以用作机器学习模型的输入的向量、可以用作机器学习模型的输入的张量等。图20涉及其中除存储系统(2004)以外的其他项根据一个或多个转换来生成(2010)转换数据集(2004)的实施例。例如,人工智能基础设施(2002)可以包括生成(2010)转换数据集(2004)的其他计算设备(例如,专用服务器)。同样地,在其他实施例中,GPU服务器(2018)可以用于生成(2010)转换数据集(2004)。在另外的实施例中,生成(2010)转换数据集(2004)可以被卸载到与人工智能基础设施(2002)进行数据通信的云服务提供商。读者将理解,在实际生成(2010)转换数据集(2014)之前,存储系统(2004)或执行转换的其他计算资源可以执行其他操作以准备数据集(2006),以供人工智能基础设施(2002)所支持的机器学习模型使用。例如,存储系统(2004)或执行转换的其他计算资源可以选择要包括在转换数据集(2014)中的数据、对数据进行格式化以确保数据格式对于从不同来源接收的数据是一致的、清理数据以丢弃不需要的数据、去除重复的数据、删除不可用的数据、处理丢失的数据、或执行其他预处理操作。
读者将理解,在其中存储系统(2004)或其他计算资源执行上述步骤的实施例中,实际执行机器学习算法的GPU服务器(2018)可以避免执行准备数据以供机器学习算法使用的高计算要求的任务,因为接收、清理、预处理和转换数据的过程可以由存储系统(2004)而不是GPU服务器(2018)执行。这样,可以保留GPU服务器(2018)所提供的计算资源以实际上针对已经准备好的转换数据集(2014)执行机器学习算法,而不是使GPU服务器(2018)所提供的计算资源负担准备数据以供机器学习算法提取的任务。
图20中描绘的示例方法还包括在一个或多个存储系统(2004)内存储(2012)转换数据集(2014)。在图20中描绘的示例方法中,可将转换数据集(2014)的各部分与奇偶校验数据一起存储在存储系统(2004)内的多个存储设备上,以通过使用RAID(例如,RAID 6)或RAID类方法来增加转换数据集(2014)的弹性。此外,在存储(2012)转换数据集(2014)时可以应用诸如数据分层之类的概念,使得更频繁访问的转换数据集被存储在存储系统(2004)的提供更快访问的部分中,而不频繁访问的转换数据集被存储在存储系统(2004)的提供较慢访问的部分中。实际上,可以扩展这样的概念,使得转换数据集与存储系统本身(2004)分层开,并存储在例如由云服务提供商提供的存储装置上。在这样的示例中,可以用于启发来在存储环境中放置和移动转换数据集,该存储环境可以包括一个或多个存储系统(2004)以及可能存在于人工智能基础设施(2002)外部的存储资源,但在其他实施例中,存储(2012)转换数据集(2014)仅在驻留在人工智能基础设施(2002)内的一个或多个存储系统(2004)内发生。
图20中描绘的示例方法还包括接收(2020)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的多个请求(2024)。读者将理解,可能由于多种原因而接收(2020)针对同一转换数据集(2014)的多个请求(2024)。例如,可以响应于GPU服务器(2018)发起执行将在转换数据集(2014)上训练的特定机器学习模型而接收(2020)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的第一请求。在这样的示例中,在训练完成之后,可以对特定机器学习模型进行改变,作为改进特定机器学习模型的工作的一部分。一旦已经对特定机器学习模型进行了改变,则可以响应于GPU服务器(2018)发起执行将在转换数据集(2014)上进行训练的更新机器学习模型而接收(2024)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的第二请求。类似地,例如,当第一GPU服务器将要执行在转换数据集(2014)上训练的特定机器学习模型的第一版本,第二GPU服务器差不多同时地执行在转换数据集(2014)上训练的特定机器学习模型的第二版本时,可以接收(2020)针对同一转换数据集(2014)的多个请求。读者将理解,由于一个或多个存储系统(2004)可以将转换数据集(2014)存储在存储系统(2004)本身内,因此存储系统(2004)和GPU服务器(2018)都不需要重复先前已执行的转换。
图20中描绘的示例方法还包括响应于每个请求(2024),将转换数据集(2014)从一个或多个存储系统(2004)传送(2022)到一个或多个GPU服务器(2018),而不对数据集(2006)重新执行一个或多个转换。转换数据集(2014)可以例如经由存储系统(2004)和一个或多个GPU服务器(2018)之间的一个或多个数据通信链路从存储系统(2004)传送(2022)到一个或多个GPU服务器(2018),其可以如上面更详细描述的来以许多不同的方式实现。将转换数据集(2014)从存储系统(2004)传送(2022)到一个或多个GPU服务器(2018)可以例如经由RDMA来执行。经由RDMA传送(2022)转换数据集(2014)可以例如通过由包括在存储系统(2004)中的网络适配器将转换数据集(2014)从存储系统(2004)中的存储器直接传送到一个或多个GPU服务器(2018)内的应用存储器来执行。通过使用这样的RDMA传送,可以绕过操作系统和GPU服务器(2018)内的GPU,使得GPU服务器(2018)中的GPU不需要任何工作(如非RDMA传送(例如,基于消息的传送)中所要求的)即可获得转换数据集(2014)。读者将理解,RDMA传送的使用是可以使实际上执行机器学习算法的GPU服务器(2018)避免执行获取转换数据集(2014)的高计算要求的任务的附加机制。这样,可以保留GPU服务器(2018)所提供的计算资源以实际上针对已经准备好的转换数据集(2014)执行机器学习算法,而不是使GPU服务器(2018)所提供的计算资源负担获取转换数据集(2014)的任务。以这种方式,一个或多个存储系统(2004)可以有效地用作可由GPU服务器(2018)用来获取转换数据集(2014)的缓存。
为了进一步解释,图21阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(2004)和一个或多个GPU服务器(2018)的人工智能基础设施(2002)中的数据转换缓存的另一示例方法的流程图。图21所示的示例方法类似于图20所示的示例方法,因为图21所示的示例方法也包括:识别(2008)应用于数据集(2006)的一个或多个转换、生成(2010)转换数据集(2004)、在一个或多个存储系统(2004)内存储(2012)转换数据集(2014)、接收(2020)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的多个请求(2024)、以及响应于每个请求(2024),将转换数据集(2014)从一个或多个存储系统(2004)传送(2022)到一个或多个GPU服务器(2018),而不对数据集(2006)重新执行一个或多个转换。
在图21所示的示例方法中,存储系统(2004)识别(2008)应用于数据集(2006)的一个或多个转换和生成(2010)转换数据集(2004)两者。读者将理解,如上所述,存储系统(2004)可以包括各种计算资源以执行这样的任务。这样,存储系统(2004)可以被配置为包括计算机程序指令,该计算机程序指令在由存储系统(2004)内的计算资源执行时,执行识别(2008)应用于数据集(2006)的一个或多个转换和生成(2010)转换数据集(2004)的步骤。
在图21所示的示例方法中,将转换数据集(2014)从一个或多个存储系统(2004)传送(2022)到一个或多个GPU服务器(2018)而不对数据集(2006)重新执行一个或多个转换可以包括将转换数据集(2014)从一个或多个存储系统(2004)直接传送(2102)到GPU服务器(2018)上的应用存储器。将转换数据集(2014)从一个或多个存储系统直接传送(2022)到GPU服务器(2018)上的应用存储器可以例如通过将转换数据集(2014)经由RDMA从存储系统(2004)传送到GPU服务器(2018)来执行。经由RDMA传送转换数据集(2014)可以例如通过由包括在存储系统(2004)中的网络适配器将转换数据集(2014)从存储系统(2004)中的存储器直接传送到一个或多个GPU服务器(2018)内的应用存储器来执行。通过使用这样的RDMA传送,可以绕过操作系统和GPU服务器(2018)内的GPU,使得GPU服务器(2018)中的GPU不需要任何工作(如非RDMA传送(例如,基于消息的传送)中所要求的)即可获得转换数据集(2014)。读者将理解,RDMA传送的使用是可以使实际上执行机器学习算法的GPU服务器(2018)避免执行获取转换数据集(2014)的高计算要求的任务的附加机制。这样,可以保留GPU服务器(2018)所提供的计算资源以实际上针对已经准备好的转换数据集(2014)执行机器学习算法,而不是使GPU服务器(2018)所提供的计算资源负担获取转换数据集(2014)的任务。读者将理解,在其他实施例中,将转换数据集(2014)从一个或多个存储系统直接传送(2022)到GPU服务器(2018)上的应用存储器可以例如通过使用NFS或其他适当的技术来执行。
为了进一步解释,图22阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(2004)和一个或多个GPU服务器(2018)的人工智能基础设施(2002)中的数据转换缓存的另一示例方法的流程图。图22所示的示例方法类似于图20和图21所示的示例方法,因为图22所示的示例方法也包括:识别(2008)应用于数据集(2006)的一个或多个转换、生成(2010)转换数据集(2004)、在一个或多个存储系统(2004)内存储(2012)转换数据集(2014)、接收(2020)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的多个请求(2024)、以及响应于每个请求(2024),将转换数据集(2014)从一个或多个存储系统(2004)传送(2022)到一个或多个GPU服务器(2018),而不对数据集(2006)重新执行一个或多个转换。
图22中描绘的示例方法包括由一个或多个GPU服务器(2018)使用转换数据集(2014)作为输入来执行(2208)与机器学习模型(2016)相关联的一种或多种机器学习算法。读者将理解,通过使用转换数据集(2014)作为输入来执行(2208)与机器学习模型(2016)相关联的一种或多种机器学习算法而生成的输出可以根据所执行的特定机器学习模型而变化。
图22中描绘的示例方法还包括由统一管理平面(2202)调度(2204)应用于数据集(2006)的对一个或多个存储系统(2004)的一个或多个转换。图22所示的统一管理平面(2202)可以体现为例如在诸如一个或多个CPU之类的计算机硬件上执行的计算机程序指令的模块。统一管理平面(2202)可以被配置为监测和管理人工智能基础设施(2002)内的所有元件,包括存储系统(2004)、GPU服务器(2018)、以及实现存储系统(2004)和GPU服务器(2018)之间的数据通信的任何其他设备(例如,网络交换机)。统一管理平面(2202)可以被配置为执行任务,例如,调度诸如由一个或多个存储系统(2004)执行的一个或多个数据集转换之类的任务、调度诸如在一个或多个GPU服务器(2018)上执行一个或多个机器学习算法之类的任务、管理可用于由一个或多个存储系统(2004)执行一个或多个数据集转换的存储系统资源量、管理可用于在一个或多个GPU服务器(2018)上执行一种或多种机器学习算法的GPU服务器资源量、管理一个或多个存储系统(2004)与一个或多个GPU服务器(2018)之间的数据路径(2018)等。
读者将理解,由于统一管理平面(2202)通过监测存储系统(2004)和GPU服务器(2018)两者而具有对存储系统(2004)和GPU服务器(2018)两者的洞察,因此统一管理平面(2202)可以以优化存储系统(2004)和GPU服务器(2018)之间的交互,并且还优化支持执行机器学习模型所需的一系列步骤的方式来管理存储系统(2004)和GPU服务器(2018)两者。实际上,统一管理平面(2202)可以被配置为基于各种因素(例如,某些数据、数据内容等的涌入)来在存储系统(2004)和GPU服务器(2018)上执行任务的自动调度。例如,统一管理平面(2202)可以被配置为决定特定机器学习模型应该针对特定数据集进行训练,统一管理平面(2202)可以被配置为决定用于运行测试以及利用新数据连续地重新训练的适当间隔等。在这样的示例中,统一管理平面(2202)可以被配置为基于一些触发(例如,新数据、异常数据)来支持具有连续学习的自动化训练。
在图22所示的示例方法中,统一管理平面(2202)被配置为调度(2204)应用于数据集(2006)的对一个或多个存储系统(2004)的一个或多个转换,并且还被配置为调度(2206)由一个或多个GPU服务器(2018)执行与机器学习模型(2016)相关联的一种或多种机器学习算法。在这样的示例中,统一管理平面(2202)可以被配置为与一个或多个存储系统(2004)上的调度器以及一个或多个GPU服务器(2018)上的调度器一起工作。统一管理平面(2202)可以被配置为例如通过以下操作来与一个或多个存储系统(2004)上的调度器以及一个或多个GPU服务器(2018)上的调度器一起工作:向存储系统(2004)发送被存储系统(2004)理解为调度指令的一个或多个消息、向GPU服务器(2018)发送被GPU服务器(2018)理解为调度指令的一个或多个消息等。在这样的示例中,存储系统(2004)和GPU服务器(2018)可以经由API或某种其他机制被配置为从统一管理平面(2202)接收调度指令,并通过一个或多个本地调度器来实现从统一管理平面(2202)接收的调度指令。
为了进一步解释,图23阐述了示出根据本公开的一些实施例的包括一个或多个存储系统(2004)和一个或多个GPU服务器(2018)的人工智能基础设施(2002)中的数据转换缓存的另一示例方法的流程图。图23中描述的示例方法类似于图20-22中描述的示例方法,因为图23中描述的示例方法也包括:识别(2008)应用于数据集(2006)的一个或多个转换、生成(2010)转换数据集(2004)、在一个或多个存储系统(2004)内存储(2012)转换数据集(2014)、接收(2020)将转换数据集(2014)传送到一个或多个GPU服务器(2018)的多个请求(2024)、以及响应于每个请求(2024),将转换数据集(2014)从一个或多个存储系统(2004)传送(2022)到一个或多个GPU服务器(2018),而不对数据集(2006)重新执行一个或多个转换。
图23中描绘的示例方法还包括由统一管理平面(2202)向一个或多个GPU服务器(2018)提供(2302)描述数据集(2006)、应用于数据集(2006)的一个或多个转换、以及转换数据集(2014)的信息(2304)。描述数据集(2006)、应用于数据集(2006)的一个或多个转换、以及转换数据集(2014)的信息(2304)可以例如由诸如上述统一管理平面(2202)之类的实体、存储系统本身、或人工智能基础设施(2002)内部或可访问人工智能基础设施(2002)的一些其他组件来维护。通过向GPU服务器(2018)提供(2302)描述数据集(2006)、应用于数据集(2006)的一个或多个转换、以及转换数据集(2014)的信息(2304),GPU服务器(2018)可被配置为简单地请求此类转换数据集(2014),而不是尝试再次应用转换。这样,存储系统(2004)可以用作转换缓存,使得不需要重复转换数据集(2006)以供由机器学习模型(2016)使用的大计算量过程。读者将理解,鉴于不同的机器学习模型可能需要相同的转换并且同一机器学习模式的不同实例可能需要相同的转换的事实,通过维护描述数据集(2006)、应用于数据集(2006)的一个或多个转换、转换数据集(2014)的信息,以及转换数据集(2014)本身,存储系统(2004)可以用作转换缓存,其存在可以防止GPU服务器(2018)内的GPU被重复地分配转换数据集(2006)以供由GPU服务器(2018)所支持的机器学习模型(2016)使用的大计算量过程。
为了进一步解释,图24阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的示例方法的流程图。尽管不太详细地描述,但图24所示的存储系统(2422)可以类似于上述存储系统,因为图24所示的存储系统(2422)可以包括上述存储系统中包含的组件的任意组合。图24所示的GPU服务器(2426)可以体现为例如服务器、工作站或其他计算设备,其专用于使用GPGPU来加速深度学习应用、机器学习应用、人工智能应用、或类似应用。尽管未在图24中明确示出,但是存储系统(2422)和GPU服务器(2424)可以耦合以通过一个或多个数据通信链路进行数据通信。读者将理解,图24中描绘的人工智能基础设施(2402)可以类似于上述的人工智能和机器学习基础设施。
图24中描绘的人工智能基础设施(2402)可以被配置为支持执行一个或多个机器学习模型。这样的机器学习模型可以包括在一个或多个GPU服务器(2426)上执行的一个或多个机器学习算法。这样的机器学习算法可以包括有监督学习算法,例如,线性回归算法、逻辑回归算法、决策树算法等。这样的机器学习算法还可以包括无监督学习算法,例如,先验算法、k-均值聚类算法等。同样地,这样的机器学习算法还可以包括增强学习算法,例如,马尔可夫决策过程、Q学习算法等。
在本文描述的示例中,可以向人工智能基础设施(2402)所支持的机器学习模型提供存储在人工智能基础设施(2402)所包括的一个或多个存储系统(2422)内的输入数据。这样,可以将存储在人工智能基础设施(2402)所包括的一个或多个存储系统(2422)内的输入数据提供给GPU服务器(2426),使得GPU服务器(2426)可以利用输入数据作为在GPU服务器(2426)上执行的机器学习算法的输入。然而,读者将理解,不同的机器学习模型可能需要不同格式、包含不同类型数据等的输入数据。例如,第一机器学习模型可以利用向量作为输入,而第二机器学习模型可以利用矩阵作为输入。
图24中描绘的示例方法包括由统一管理平面(2404)识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换。读者将理解,将一个或多个转换应用于数据集(2414)使得人工智能基础设施(2402)生成转换数据集(2416),如上面更详细地描述的。在这样的示例中,人工智能基础设施(2402)可以通过将转换数据集(2416)存储在人工智能基础设施(2402)所包括的一个或多个存储系统(2422)内来保留转换数据集(2416)。
图24所示的统一管理平面(2404)可以体现为例如在诸如一个或多个CPU之类的计算机硬件上执行的计算机程序指令的模块。统一管理平面(2404)可以被配置为监测和管理人工智能基础设施(2402)内的所有元件,包括存储系统(2422)、GPU服务器(2426)、以及实现存储系统(2422)和GPU服务器(2426)之间的数据通信的任何设备(例如,网络交换机)。统一管理平面(2404)可以被配置为执行任务,例如,调度诸如由一个或多个存储系统(2422)执行的一个或多个数据集转换之类的任务、调度诸如在一个或多个GPU服务器(2426)上执行一个或多个机器学习算法之类的任务、管理可用于由一个或多个存储系统(2422)执行一个或多个数据集转换的存储系统资源量、管理可用于在一个或多个GPU服务器(2426)上执行一种或多种机器学习算法的GPU服务器资源量、管理一个或多个存储系统(2422)与一个或多个GPU服务器(2426)之间的数据路径等。
读者将理解,由于统一管理平面(2404)通过监测存储系统(2422)和GPU服务器(2426)两者而具有对存储系统(2422)和GPU服务器(2426)两者的洞察,因此统一管理平面(2404)可以以优化存储系统(2422)和GPU服务器(2426)之间的交互,并且还优化支持执行机器学习模型所需的一系列步骤的方式来管理存储系统(2422)和GPU服务器(2426)两者。实际上,统一管理平面(2404)可以被配置为基于各种因素(例如,某些数据、数据内容等的涌入)来在存储系统(2422)和GPU服务器(2426)上执行任务的自动调度。例如,统一管理平面(2404)可以被配置为决定特定机器学习模型应该针对特定数据集进行训练,统一管理平面(2404)可以被配置为决定用于运行测试以及利用新数据连续地重新训练的适当间隔等。在这样的示例中,统一管理平面(2404)可以被配置为基于一些触发(例如,新数据、异常数据)来支持具有连续学习的自动化训练。
读者将进一步理解,由于统一管理平面(2404)通过监测存储系统(2422)和GPU服务器(2426)两者而具有对存储系统(2422)和GPU服务器(2426)两者的洞察,统一管理平面(2404)还可以执行审计和重现任务。例如,图24中描绘的统一管理平面(2404)被配置为识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换。统一管理平面(2404)可以例如通过保留统一管理平面(2404)调度和确认的转换被存储系统(2422)成功执行的信息(例如,标识符、通用描述)来识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换。在这样的示例中,统一管理平面(2404)可以通过将这样的信息存储在一个或多个存储系统(2422)中、通过用识别数据集(2414)和应用于数据集(2416)的转换的元数据标记每个转换数据集(2416)、通过将这样的信息存储在执行统一管理平面(2404)的设备(例如,独立服务器)中所包含的存储器或存储装置中、或以许多其他方式来保留这样的信息。
图24中描绘的示例方法还包括在一个或多个存储系统(2422)内存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)。描述数据集(2414)的信息可以体现为例如包含数据集(2414)的文件的标识符、存储数据集(2414)的虚拟地址或物理地址的范围、包含数据集(2414)的存储系统内的特定卷的标识符、由包含数据集的存储系统(2422)管理的内部数据结构的标识符等。描述应用于数据集(2414)的一个或多个转换的信息可以体现为例如与特定转换(例如,作为一组支持的转换的一部分的转换)相关联的标识符、特定转换的通用描述、(被执行时)执行特定转换的一组特定计算机程序指令的标识符等。描述转换数据集(2416)的信息可以体现为例如包含转换数据集(2416)的文件的标识符、存储转换数据集(2416)的虚拟地址或物理地址的范围、包含转换数据集(2416)的存储系统内的特定卷的标识符、由包含转换数据集(2416)的存储系统(2422)管理的内部数据结构的标识符等。
读者将理解,描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)可以体现为例如专用数据结构,其包含描述数据集(2414)的信息、描述应用于数据集(2414)的一个或多个变换的信息、以及描述转换数据集(2416)的信息。读者将理解,尽管图24中描述的示例涉及其中描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)被存储(2408)在一个或多个存储系统(2422)内的实施例,但在其他实施例中,信息(2418)可以存储在包括更少的或额外的独特信息的存储系统中。例如,在一些实施例中,统一管理平面(2404)可以仅存储(2408)描述数据集(2414)以及应用于数据集(2414)的一个或多个转换的信息(2418)。同样地,在其他实施例中,统一管理平面(2404)可以存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、转换数据集(2416)的信息(2418),以及附加信息(例如,数据集的来源、在数据集中检测到的异常等)。
图24中描绘的示例方法还包括由统一管理平面(2404)识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)。读者将进一步理解,由于统一管理平面(2404)通过监测存储系统(2422)和GPU服务器(2426)两者而具有对存储系统(2422)和GPU服务器(2426)两者的洞察,统一管理平面(2404)还可以执行审计和重现任务。例如,图24所示的统一管理平面(2404)被配置为识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)。统一管理平面(2404)可以例如通过保留机器学习模型(2424)(其执行由统一管理平面(2404)调度)的信息(例如,标识符、通用描述)以及描述哪些数据被用作机器学习模型(2424)的输入的信息,来识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)。在这样的示例中,统一管理平面(2404)可以生成信息,例如,将每个机器学习模型与由机器学习模型摄取的数据集相关联的表格。统一管理平面(2404)可以通过以下操作来保留这样的信息:在一个或多个存储系统(2422)中存储这样的信息、用识别摄取转换数据集(2416)的特定机器学习模型的元数据标记每个转换数据集(2416)、将这样的信息存储在执行统一管理平面(2404)的设备(例如,独立服务器)所包含的存储器或存储装置内等。
图24中描绘的示例方法还包括在一个或多个存储系统(2422)中存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)可以体现为例如专用数据结构,其包含描述由人工智能基础设施(2402)执行的每个机器学习模型的信息,以及用作对特定机器学习模型的输入的每个不同的数据集的标识。读者将理解,尽管图24中描述的示例涉及其中描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)被存储(2412)在一个或多个存储系统(2422)内的实施例,但在其他实施例中,信息(2420)可以存储在包括更少的或额外的独特信息的存储系统中。
为了进一步解释,图25阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的另一示例方法的流程图。图25所示的示例方法类似于图24所示的示例方法,因为图25所示的示例方法也包括:识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换、存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)、识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)、以及存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。
在图25所示的示例方法中,存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)可以包括通过人工智能基础设施(2402)将预定散列函数应用于数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)来生成(2502)散列值。在图25所示的示例方法中,将预定散列函数应用于数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)可以以多种方式来执行,其中,数据集(2414)的一些表示、应用于数据集(2414)的一个或多个转换的一些表示、以及转换数据集(2416)的一些表示被用作散列函数的输入。例如,数据集(2414)的内容可以用作散列函数的输入,数据集(2414)的快照的标识符可以用作散列函数的输入,数据集(2414)的地址(在存储系统内或甚至在较低存储层中)可以用作散列函数的输入等。读者将理解,转换数据集(2416)的类似表示可以用作散列函数的输入。关于应用于数据集(2414)的所应用的一个或多个转换,可以用作散列函数的输入的应用于数据集(2414)的一个或多个变换的表示可以包括,例如,包括转换的源代码的文本字符串、一个或多个转换的标识符等。读者将理解,可以使用任何散列函数,并且可以使用数据集(2414)、应用于数据集的一个或多个转换(2414)、以及转换数据集(2416)的任何表示,只要这样的散列函数和此类表示可以产生人工智能基础设施(2402)可在稍后的时间用来重构数据集(2414)、应用于数据集的一个或多个转换(2414)、以及转换数据集(2416),或以其他方式获得对它们的访问的散列值即可。在图25所示的示例方法中,存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)还可以包括在一个或多个存储系统(2422)中存储(2504)散列值。
为了进一步解释,图26阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的另一示例方法的流程图。图26所示的示例方法类似于图24所示的示例方法,因为图26所示的示例方法也包括:识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换、存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)、识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)、以及存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。
在图26所示的示例方法中,存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)可以包括通过人工智能基础设施(2402)将预定散列函数应用于一个或多个机器学习模型(2424)和转换数据集(2416)来生成(2602)散列值。在图26所示的示例方法中,将预定散列函数应用于一个或多个机器学习模型(2424)和转换数据集(2416)可以以多种方式来执行,其中,一个或多个机器学习模型(2424)的一些表示和转换数据集(2416)的一些表示被用作散列函数的输入。例如,转换数据集(2416)的内容可以用作散列函数的输入,转换数据集(2416)的快照的标识符可以用作散列函数的输入,转换数据集(2416)的地址(在存储系统内或甚至在较低存储层中)可以用作散列函数的输入等。关于一个或多个机器学习模型(2424),可以用作散列函数的输入的一个或多个机器学习模型(2424)的表示可以包括,例如,包括底层机器学习算法的源代码的文本字符串、一个或多个机器学习模型(2424)的标识符等。读者将理解,可以使用任何散列函数,并且可以使用一个或多个机器学习模型(2424)和转换数据集(2416)的任何表示,只要这样的散列函数和此类表示可以产生人工智能基础设施(2402)可在稍后的时间用来重构一个或多个机器学习模型(2424)和转换数据集(2416),或以其他方式获得对它们的访问的散列值即可。在图26所示的示例方法中,存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)还可以包括在一个或多个存储系统(2422)中存储(2604)散列值。
为了进一步解释,图27阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的示例方法的流程图。图27所示的示例方法类似于图24所示的示例方法,因为图27所示的示例方法也包括:识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换、存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)、识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)、以及存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。
图27中描绘的示例方法还包括由统一管理平面(2404)识别(2702)机器学习模型(2424)与先前由人工智能基础设施(2402)执行的一个或多个机器学习模型之间的差异。在图27所示的示例方法中,可以对特定机器学习模型进行更改,作为获得更好结果(例如,提高的准确性、更快的训练时间)的努力的一部分。在这样的示例中,对机器学习模型(即第一机器学习模型)进行改变可以使得创建不同的机器学习模型(即第二机器学习模型)。然而,由于两个机器学习模型的一些部分可能是相同的,因此保留每个模型的所有组件可能效率不高,因为可能会保留每个模型的相同部分的复制副本。这样,人工智能基础设施(2402)可以被配置为利用上面生成的审计信息来识别(2702)机器学习模型(2424)与先前由人工智能基础设施(2402)执行的一个或多个机器学习模型之间的差异。这样,并且为了追求对存储系统的更高效利用,人工智能基础设施(2402)可以被配置为保留:1)第一机器学习模型的所有组件,以及2)第二机器学习模型的仅与第一模型的组件不同的组件。这样,图27中描绘的示例方法还包括在一个或多个存储系统(2422)内存储(2704)机器学习模型(2424)的仅与先前由人工智能基础设施(2402)执行的机器学习模型不同的部分。读者将理解,存储(2704)机器学习模型(2424)的仅与先前由人工智能基础设施(2402)执行的机器学习模型不同的部分可以包括存储模型的新的/经更新的/不同的组件,以及如上所述的所有相关的元数据和审计信息。
考虑其中第一机器学习模型包括机器学习算法A、B和C的示例。在这样的示例中,假设第一机器学习模型在人工智能基础设施(2402)上执行,并且算法B随后被修改以努力改善机器学习模型,从而创建算法B’。在这样的示例中,假设创建包括机器学习算法A、B’和C的第二机器学习模型。在这样的示例中,统一管理平面(2404)可以通过比较机器学习模型以识别组件之间的差异、组件的不存在、组件的添加等,来识别(2704)机器学习模型(2424)和先前由人工智能基础设施(2402)执行的机器学习模型之间的差异。在该示例中,统一管理平面(2404)可以识别(2704)机器学习算法B不同于机器学习算法B’,而其余的机器学习模型是相同的。这样,统一管理平面(2404)可以存储(2704)机器学习模型(2424)的仅与先前由人工智能基础设施(2402)执行的机器学习模型不同的部分(例如,机器学习算法B’的源代码以及所有相关的元数据和审计信息),而无需存储机器学习模型(2424)的(通过人工智能基础设施(2402)已经执行第一机器学习算法)已经保留在一个或多个存储系统(2422)内的信息或组件(例如,机器学习算法A和C的源代码)。
为了进一步解释,图28阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的另一示例方法的流程图。图28所示的示例方法类似于图24所示的示例方法,因为图28所示的示例方法也包括:识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换、存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)、识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)、以及存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。
图28中描绘的示例方法还包括由人工智能基础设施(2402)确定(2802)与先前执行的机器学习模型有关的数据(2810)是否应当从一个或多个存储系统(2422)分层。在图28所示的示例方法中,与先前执行的机器学习模型有关的数据(2810)可以包括例如机器学习模型的组件的源代码、机器学习模型所摄取的数据集、与机器学习模型及其执行相关联的元数据等。
读者将理解,如上所述,可以对特定机器学习模型进行更改,作为获得更好结果(例如,提高的准确性、更快的训练时间)的努力的一部分。在这样的示例中,对机器学习模型(即第一机器学习模型)进行改变可以使得创建不同的机器学习模型(即第二机器学习模型)。在这样的情况下,第一机器学习模型可以被视为特定机器学习模型的第一版本,并且第二机器学习模型可以被视为特定机器学习模型的第二版本。如果机器学习模型的一个版本被证明优于机器学习模型的另一版本,则可能希望通过停止保留与由于存在这样的机器学习模型的高级版本而变得过时的机器学习模型有关的数据,来保留包括在人工智能基础设施(2402)中的存储系统(2422)内的空间。
因此,图28中描绘的示例方法包括响应于肯定地(2804)确定与先前执行的机器学习模型有关的数据(2810)应从一个或多个存储系统(2422)分层,将与先前执行的机器学习模型有关的数据(2810)存储(2806)在较低层存储(2812)中。较低层存储(2812)可被实现为例如云存储装置、由人工智能基础设施(2402)外部的存储系统提供的存储装置、人工智能基础设施(2402)内的较慢存储装置等。以这种方式,与先前执行的机器学习模型(例如,过时的模型或以其他方式较差的模型)有关的数据(2810)可以从用于馈送GPU服务器(2426)或以其他方式代表GPU服务器(2426)执行任务(例如,数据转换)的存储系统(2422)上移出。
图28中描绘的示例方法还包括响应于肯定地(2804)确定与先前执行的机器学习模型有关的数据(2810)应从一个或多个存储系统(2422)分层,从一个或多个存储系统(2422)移除(2808)与先前执行的机器学习模型有关的数据(2810)。从一个或多个存储系统(2422)移除(2808)与先前执行的机器学习模型有关的数据(2810)可以例如通过将包含与先前执行的机器学习模型有关的数据(2810)的位置标记为对于垃圾回收过程的后续回收无效来执行。
考虑其中第一机器学习模型初始地包括机器学习算法A、B和C的上述示例。在这样的示例中,假设第一机器学习模型在人工智能基础设施(2402)上执行,并且算法B随后被修改以努力改善机器学习模型,从而创建算法B’,从而创建包括机器学习算法A、B’和C的第二机器学习模型。进一步假设统一管理平面(2404)随后确定第二机器学习模型是对第一机器学习模型的改进,并且将不再使用第一机器学习模型。在这样的示例中,统一管理平面(2404)可以肯定地(2804)确定与第一机器学习模型的执行有关的数据应当被分层到较低层存储(2812)。统一管理平面(2404)随后可以将与第一机器学习模型的执行有关的数据(2810)存储(2806)在较低层存储(2812)中,并从一个或多个存储系统(2422)中移除(2808)与第一机器学习模型的执行有关的数据(2810)。读者将理解,鉴于上述数据减少技术(例如,关于图27),仅与第一机器学习模型的执行有关的数据的唯一部分可以被存储(2806)在较低层存储(2812)中,并从一个或多个存储系统(2422)中移除(2808)。例如,仅与机器学习算法B相关联的源代码可以被存储(2806)在较低层存储(2812)中并从一个或多个存储系统(2422)中移除(2808),因为与机器学习算法A和C相关联的源代码不必被分层到较低层存储(2812),因为这些算法是第二机器学习模型的一部分,该第二机器学习模型的相关联数据尚未分层到较低层存储(2812)。这样,在将与先前执行的机器学习模型有关的数据(2810)存储(2806)在较低层存储(2812)中,并且从一个或多个存储系统(2422)中移除(2808)与先前执行的机器学习模型有关的数据(2810)之前,人工智能基础设施(2402)可以识别与先前执行的机器学习模型有关的数据(2810)的对于先前执行的机器学习模型是唯一的部分,并且仅存储(2806)和移除(2808)唯一的部分。
为了进一步解释,图29阐述了示出根据本公开的一些实施例的确保人工智能基础设施(2402)中的再现性的另一示例方法的流程图。图29中描绘的示例方法类似于图24中描绘的示例方法,因为图29中描绘的示例方法也包括:识别(2406)由人工智能基础设施(2402)应用于数据集(2414)的一个或多个转换、存储(2408)描述数据集(2414)、应用于数据集(2414)的一个或多个转换、以及转换数据集(2416)的信息(2418)、识别(2410)由人工智能基础设施(2402)使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)、以及存储(2412)描述使用转换数据集(2416)作为输入而执行的一个或多个机器学习模型(2424)的信息(2420)。
图29中描绘的示例方法还包括从多个机器学习模型中识别(2902)优选机器学习模型。从多个机器学习模型中识别(2902)优选机器学习模型可以例如通过下述操作来执行:比较多个机器学习模型,以识别哪个机器学习模型相对于一组预定标准(例如,最准确、实现特定准确性阈值的最快时间等)表现最佳。在这样的示例中,可以以加权或未加权的方式使用多个度量,以识别(2902)优选机器学习模型。在这样的示例中,人工智能基础设施(2402)可以被配置为例如通过以下操作来使用这样的信息:将优选机器学习模型自动推送到生产环境中而其余的机器学习模型仅在测试或开发环境中使用、向用户提供此类信息以用于选择将使用的机器学习模型、提供关于特定用户应在其生产环境中从一个机器学习模型切换到另一机器学习模型的建议、如果确定机器学习模型的先前版本优先于机器学习模型的后续版本则自动回滚到机器学习模型的先前版本等。在图29中描绘的示例方法中,从多个机器学习模型中识别(2902)优选机器学习模型可以包括利用预定模型测试来评估(2904)一个或多个机器学习模型。预定模型测试可以体现为例如A/B测试模型(其中比较两个机器学习模型)、金丝燕测试模型(以确定所有依赖项已经准备好)等。
图29中描绘的示例方法还包括跟踪(2906)特定机器学习模型随时间的改进。跟踪(2906)特定机器学习模型随时间的改进可以例如通过维护描述特定机器学习模型在各个时间点的性能的信息来进行。例如,跟踪(2906)特定机器学习模型随时间的改进可以通过周期性地编译用于特定机器学习模型的混淆矩阵以识别模型的精确性、模型的精度/召回率等来执行。同样地,跟踪(2906)特定机器学习模型随时间的改进可以通过以下操作来执行:周期性地确定与特定机器学习模型相关联的提升、周期性地确定特定机器学习模型与收支平衡点的接近度、周期性地生成和检查特定机器学习模型的接收器操作特性(‘ROC’)曲线等。在这样的示例中,人工智能基础设施(2402)可以被配置为通过以下操作来使用跟踪(2906)特定机器学习模型随时间的改进:基于每个机器学习模型的相应趋势,将特定机器学习模型自动推送到生产环境中而其余的机器学习模型仅在测试或开发环境中使用、向用户提供此类信息以用于选择将使用的机器学习模型、提供关于特定用户应在其生产环境中从一个机器学习模型切换到另一机器学习模型的建议等。
读者将理解,上述实施例在部署多个人工智能基础设施的实施例中可能特别有价值。在这样的示例中,由第一人工智能基础设施保留的审计信息可以由第二人工智能基础设施使用。例如,各种机器学习模型针对第一人工智能基础设施上的特定数据集的性能可用于做出关于下述项的建议:在第二人工智能基础设施遇到相同(或类似)的数据集时,应使用哪个机器学习模型。实际上,这个想法甚至可以扩展为基于第一人工智能基础设施保留的审计信息以及第二人工智能基础设施已接收到的数据集指纹,在第二人工智能础设施上自动选择和部署特定机器学习模型。在其他实施例中,由第一人工智能基础设施保留的审计信息可以用于选择特定机器学习模型在人工智能基础设施群内的布置。这样的审计信息可以包括例如支持机器学习模型的执行所需的处理资源量、支持机器学习模型的执行所需的联网资源量、支持机器学习模型的执行所需的存储资源量等。在这样的示例中,当部署相同或相似的机器学习模型时,此类信息可用于基于各种人工智能基础设施中可用的资源量来识别应用于支持相同或相似的机器学习模型的特定人工智能基础设施,本质上是基于机器学习工作负载的资源需求和人工智能基础设施内的资源可用性,将机器学习工作负载置于“最适合”的人工智能基础设施中。实际上,可以执行类似的分析,以基于机器学习工作负载的资源利用率趋势以及人工智能基础设施内的资源可用性来确定是否应从一个人工智能基础设施中移动特定机器学习模型。
上述实施例可以实现上述人工智能基础设施的改进的操作。例如,通过使用上述分层技术,可以改进人工智能基础设施的操作,因为具有人工智能基础设施的有限存储资源可以专用于支持有价值的、当前使用的机器学习模型,而价值较低、先前使用的机器学习模型被分层到较低层存储。同样地,通过使用仅保留两个机器学习模型之间的增量的技术,可以通过避免存储重复项来更高效地使用有限的存储资源。此外,人工智能基础设施可以通过保留审计信息来提供改进的用户体验,该审计信息可使得开发人员将开发过程视为单个对象而不是一系列各种模型,因为可以访问各种更改的影响。另外,人工智能基础设施可以利用这种审计信息来提供更高效地重建和重现开发过程。
读者将理解,尽管前面的段落涉及其中步骤可以被描述为以某种顺序发生的实施例,但是除非另有说明,否则不需要进行排序。实际上,前面的段落中描述的步骤可以按任何顺序进行。此外,尽管可以在一个附图中描述一个步骤并且可以在另一附图中描述另一步骤,但是本公开的实施例不限于这样的组合,因为上述任何步骤可以在特定实施例中组合。
读者将进一步理解,尽管上述示例涉及其中人工智能基础设施支持机器学习模型的执行的实施例,但是人工智能基础设施可以支持执行包括生产算法的更广泛的AI算法。实际上,上述步骤可以类似地应用于此类更广泛的AI算法。
读者将进一步理解,尽管上述实施例涉及其中人工智能基础设施包括一个或多个存储系统和一个或多个GPU服务器的实施例,但是在其他实施例中,可以使用其他技术。例如,在一些实施例中,GPU服务器可以被以非服务器形状因子体现的GPU的集合代替。同样地,在一些实施例中,GPU服务器可以被可执行计算机程序指令的某种其他形式的计算机硬件代替,其中,可执行计算机程序指令的计算机硬件可体现为服务器形状因子或非服务器形状因子。
主要在全功能计算机系统的上下文中描述了示例实施例。然而,本领域技术人员将认识到,本公开还可以体现在设置在计算机可读存储介质上以与任何合适的数据处理系统一起使用的计算机程序产品中。这样的计算机可读存储介质可以是用于机器可读信息的任何存储介质,包括磁性介质、光学介质、或其他合适的介质。这样的介质的示例包括硬盘驱动器或软盘中的磁盘、用于光驱的光盘、磁带、以及本领域技术人员会想到的其他介质。本领域技术人员将立即认识到,具有合适的编程装置的任何计算机系统将能够执行如在计算机程序产品中体现的方法的步骤。本领域技术人员还将认识到,尽管在本说明书中描述的一些示例实施例是针对在计算机硬件上安装和执行的软件,然而,实现为固件或硬件的替代实施例也完全在本公开的范围内。
实施例可包括系统、方法和/或计算机程序产品。计算机程序产品可以包括其上有计算机可读程序指令以用于使处理器执行本公开的各方面的(一个或多个)计算机可读存储介质。
计算机可读存储介质可以是可保留并存储指令以供由指令执行设备使用的有形设备。计算机可读存储介质可以是但不限于例如电子存储设备、磁存储设备、光学存储设备、电磁存储设备、半导体存储设备、或前述项的任何适合的组合。计算机可读存储介质的更具体示例的非详尽列表包括下列项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、静态随机存取存储器(SRAM)、便携式紧致盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如上面记录有指令的凹槽中的穿孔卡或凸起结构之类的机械编码设备、以及前述项的任何适合的组合。如本文所使用的计算机可读存储介质不应被解释为暂态信号本身,例如,无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)、或通过线缆发送的电信号。
本文描述的计算机可读程序指令可经由网络(例如,互联网、局域网、广域网和/或无线网)从计算机可读存储介质下载到相应的计算/处理设备、或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应的计算/处理设备内的计算机可读存储介质中。
用于执行本公开的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、或用一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk、C++之类的面向对象编程语言以及诸如“C”编程语言或类似的编程语言之类的传统过程编程语言。计算机可读程序指令可以完全在用户的计算机上、部分地在用户的计算机上、作为独立软件包、部分地在用户的计算机上并且部分地在远程计算机上、或者完全在远程计算机或服务器上执行。在后一场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商来通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本公开的各方面。
在本文中参考根据本公开的一些实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应理解的是,可通过计算机可读程序指令来实现流程图图示和/或框图的每个框、以及流程图图示和/或框图中的框的组合。
可以将这些计算机可读程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由该计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现一个或多个流程图和/或框图框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,这些计算机可读程序指令可指示计算机、可编程数据处理装置、和/或其他设备以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制品,所述制品包括实现一个或多个流程图和/或框图框中指定的功能/动作的各方面的指令。
还可以将计算机可读程序指令加载到计算机、其他可编程数据处理装置或其他设备上,以使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得在该计算机、其他可编程装置或其他设备上执行的指令实现一个或多个流程图和/或框图框中指定的功能/动作。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实施方式的架构、功能性和操作。在这方面,流程图或框图中的每个框可以表示指令的模块、段、或部分,其包括用于实现所指定的(一个或多个)逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中指出的功能可以不按附图中指出的顺序发生。例如,取决于所涉及的功能性,事实上可以基本上同时执行相继示出的两个框,或者有时可以以相反的顺序执行框。还应注意的是,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可由执行所指定的功能或动作或者实行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
读者应理解,可以以各种方式执行本文描述的步骤,并且不要求特定顺序。从前面的描述中进一步理解,可以在本公开的各种实施例中进行修改和变化,而不脱离其真实精神。本说明书中的描述仅用于图示的目的,而不应为在限制性意义上进行解释。本公开的范围仅受所附权利要求的语言限定。
Claims (17)
1.一种确保人工智能基础设施中的再现性的方法,所述人工智能基础设施包括一个或多个存储系统和一个或多个图形处理单元(‘GPU’)服务器,所述方法包括:
由统一管理平面识别由所述人工智能基础设施应用于数据集的一个或多个转换,其中,将所述一个或多个转换应用于所述数据集使得所述人工智能基础设施生成转换数据集;
在所述一个或多个存储系统内存储描述所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集的信息;
由所述统一管理平面识别由所述人工智能基础设施使用所述转换数据集作为输入而执行的一个或多个机器学习模型;以及
在所述一个或多个存储系统内存储描述使用所述转换数据集作为输入而执行的一个或多个机器学习模型的信息;
由所述人工智能基础设施确定与先前执行的机器学习模型有关的数据是否应从所述一个或多个存储系统中分层;以及
响应于确定与所述先前执行的机器学习模型有关的所述数据应从所述一个或多个存储系统中分层:
将与所述先前执行的机器学习模型有关的所述数据存储在较低层存储中;以及
从所述一个或多个存储系统中移除与所述先前执行的机器学习模型有关的所述数据。
2.根据权利要求1所述的方法,其中,在所述一个或多个存储系统内存储描述所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集的信息还包括:
通过由所述人工智能基础设施将预定散列函数应用于所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集来生成散列值;以及
在所述一个或多个存储系统内存储所述散列值。
3.根据权利要求1所述的方法,其中,在所述一个或多个存储系统内存储描述使用所述转换数据集作为输入而执行的一个或多个机器学习模型的信息还包括:
通过由所述人工智能基础设施将预定散列函数应用于所述一个或多个机器学习模型和所述转换数据集来生成散列值;以及
在所述一个或多个存储系统内存储所述散列值。
4.根据权利要求1所述的方法,还包括:
由所述统一管理平面识别机器学习模型与先前由所述人工智能基础设施执行的机器学习模型之间的差异;以及
在所述一个或多个存储系统内存储所述机器学习模型的仅与所述先前由所述人工智能基础设施执行的机器学习模型不同的部分。
5.根据权利要求1所述的方法,还包括:从多个机器学习模型中识别优选机器学习模型。
6.根据权利要求1所述的方法,还包括:追踪特定机器学习模型随时间的改进。
7.一种人工智能基础设施,所述人工智能基础设施包括一个或多个存储系统和一个或多个图形处理单元(‘GPU’)服务器,所述人工智能基础设施被配置为执行以下步骤:
由统一管理平面识别由所述人工智能基础设施应用于数据集的一个或多个转换,其中,将所述一个或多个转换应用于所述数据集使得所述人工智能基础设施生成转换数据集;
在所述一个或多个存储系统内存储描述所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集的信息;
由所述统一管理平面识别由所述人工智能基础设施使用所述转换数据集作为输入而执行的一个或多个机器学习模型;以及
在所述一个或多个存储系统内存储描述使用所述转换数据集作为输入而执行的一个或多个机器学习模型的信息;
由所述人工智能基础设施确定与先前执行的机器学习模型有关的数据是否应从所述一个或多个存储系统中分层;以及
响应于确定与所述先前执行的机器学习模型有关的所述数据应从所述一个或多个存储系统中分层:
将与所述先前执行的机器学习模型有关的所述数据存储在较低层存储中;以及
从所述一个或多个存储系统中移除与所述先前执行的机器学习模型有关的所述数据。
8.根据权利要求7所述的人工智能基础设施,其中,在所述一个或多个存储系统内存储描述所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集的信息还包括:
通过由所述人工智能基础设施将预定散列函数应用于下述项来生成散列值:应用于所述数据集的所述一个或多个转换和所述转换数据集;以及
在所述一个或多个存储系统内存储所述散列值。
9.根据权利要求7所述的人工智能基础设施,其中,在所述一个或多个存储系统内存储描述使用所述转换数据集作为输入而执行的一个或多个机器学习模型的信息还包括:
通过由所述人工智能基础设施将预定散列函数应用于所述一个或多个机器学习模型来生成散列值;以及
在所述一个或多个存储系统内存储所述散列值。
10.根据权利要求7所述的人工智能基础设施,其中,所述人工智能基础设施还被配置为执行以下步骤:
由所述统一管理平面识别机器学习模型与先前由所述人工智能基础设施执行的机器学习模型之间的差异;以及
在所述一个或多个存储系统内存储所述机器学习模型的仅与所述先前由所述人工智能基础设施执行的机器学习模型不同的部分。
11.根据权利要求7所述的人工智能基础设施,其中,所述人工智能基础设施还被配置为执行以下步骤:从多个机器学习模型中识别优选机器学习模型。
12.根据权利要求7所述的人工智能基础设施,其中,所述人工智能基础设施还被配置为执行以下步骤:追踪特定机器学习模型随时间的改进。
13.一种用于人工智能基础设施中的数据转换卸载的装置,所述人工智能基础设施包括一个或多个存储系统和一个或多个图形处理单元(‘GPU’)服务器,所述装置包括计算机处理器、可操作地耦合至所述计算机处理器的计算机存储器,所述计算机存储器在其中布置有计算机程序指令,所述计算机程序指令在由所述计算机处理器执行时,使得所述装置执行以下步骤:
由统一管理平面识别由所述人工智能基础设施应用于数据集的一个或多个转换,其中,将所述一个或多个转换应用于所述数据集使得所述人工智能基础设施生成转换数据集;
在所述一个或多个存储系统内存储描述所述数据集、应用于所述数据集的所述一个或多个转换、以及所述转换数据集的信息;
由所述统一管理平面识别由所述人工智能基础设施使用所述转换数据集作为输入而执行的一个或多个机器学习模型;以及
在所述一个或多个存储系统内存储描述使用所述转换数据集作为输入而执行的一个或多个机器学习模型的信息;
由所述人工智能基础设施确定与先前执行的机器学习模型有关的数据是否应从所述一个或多个存储系统中分层;以及
响应于确定与所述先前执行的机器学习模型有关的所述数据应从所述一个或多个存储系统中分层:
将与所述先前执行的机器学习模型有关的所述数据存储在较低层存储中;以及
从所述一个或多个存储系统中移除与所述先前执行的机器学习模型有关的所述数据。
14.根据权利要求13所述的装置,还包括计算机程序指令,所述计算机程序指令在由所述计算机处理器执行时使得所述装置执行以下步骤:
由所述统一管理平面识别机器学习模型与先前由所述人工智能基础设施执行的机器学习模型之间的差异;以及
在所述一个或多个存储系统内存储所述机器学习模型的仅与所述先前由所述人工智能基础设施执行的机器学习模型不同的部分。
15.根据权利要求13所述的装置,还包括计算机程序指令,所述计算机程序指令在由所述计算机处理器执行时使得所述装置执行以下步骤:从多个机器学习模型中识别优选机器学习模型。
16.根据权利要求13所述的装置,还包括计算机程序指令,所述计算机程序指令在由所述计算机处理器执行时使得所述装置执行以下步骤:追踪特定机器学习模型随时间的改进。
17.根据权利要求13所述的装置,还包括计算机程序指令,所述计算机程序指令在由所述计算机处理器执行时使得所述装置执行以下步骤:
通过由所述人工智能基础设施将预定散列函数应用于下述项来生成散列值:所述数据集和应用于所述数据集的所述一个或多个转换;以及
在所述一个或多个存储系统内存储所述散列值。
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762574534P | 2017-10-19 | 2017-10-19 | |
US62/574,534 | 2017-10-19 | ||
US201762576523P | 2017-10-24 | 2017-10-24 | |
US62/576,523 | 2017-10-24 | ||
US201762579057P | 2017-10-30 | 2017-10-30 | |
US62/579,057 | 2017-10-30 | ||
US201862620286P | 2018-01-22 | 2018-01-22 | |
US62/620,286 | 2018-01-22 | ||
US201862648368P | 2018-03-26 | 2018-03-26 | |
US62/648,368 | 2018-03-26 | ||
US201862650736P | 2018-03-30 | 2018-03-30 | |
US62/650,736 | 2018-03-30 | ||
US16/045,814 | 2018-07-26 | ||
US16/045,814 US10360214B2 (en) | 2017-10-19 | 2018-07-26 | Ensuring reproducibility in an artificial intelligence infrastructure |
PCT/US2018/044571 WO2018218259A1 (en) | 2017-10-19 | 2018-07-31 | Ensuring reproducibility in an artificial intelligence infrastructure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133409A CN111133409A (zh) | 2020-05-08 |
CN111133409B true CN111133409B (zh) | 2023-10-31 |
Family
ID=63452703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880059861.3A Active CN111133409B (zh) | 2017-10-19 | 2018-07-31 | 确保人工智能基础设施中的再现性 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10360214B2 (zh) |
EP (3) | EP4242822A3 (zh) |
CN (1) | CN111133409B (zh) |
WO (1) | WO2018218259A1 (zh) |
Families Citing this family (141)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017052663A1 (en) * | 2015-09-26 | 2017-03-30 | Intel Corporation | Valid lane training |
US10558646B2 (en) * | 2017-04-30 | 2020-02-11 | International Business Machines Corporation | Cognitive deduplication-aware data placement in large scale storage systems |
US11238164B2 (en) * | 2017-07-10 | 2022-02-01 | Burstiq, Inc. | Secure adaptive data storage platform |
US11861423B1 (en) | 2017-10-19 | 2024-01-02 | Pure Storage, Inc. | Accelerating artificial intelligence (‘AI’) workflows |
US10671435B1 (en) | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Data transformation caching in an artificial intelligence infrastructure |
US10360214B2 (en) | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US11494692B1 (en) | 2018-03-26 | 2022-11-08 | Pure Storage, Inc. | Hyperscale artificial intelligence and machine learning infrastructure |
US11455168B1 (en) | 2017-10-19 | 2022-09-27 | Pure Storage, Inc. | Batch building for deep learning training workloads |
US10951552B2 (en) * | 2017-10-30 | 2021-03-16 | International Business Machines Corporation | Generation of a chatbot interface for an application programming interface |
US11054811B2 (en) * | 2017-11-03 | 2021-07-06 | Drishti Technologies, Inc. | Systems and methods for line balancing |
US11164073B2 (en) | 2018-02-08 | 2021-11-02 | Western Digital Technologies, Inc. | Systolic neural network processor with feedback control |
US11494582B2 (en) | 2018-02-08 | 2022-11-08 | Western Digital Technologies, Inc. | Configurable neural network engine of tensor arrays and memory cells |
EP3528435B1 (en) * | 2018-02-16 | 2021-03-31 | Juniper Networks, Inc. | Automated configuration and data collection during modeling of network devices |
US11137926B1 (en) * | 2018-03-30 | 2021-10-05 | Veritas Technologies Llc | Systems and methods for automatic storage tiering |
US10789087B2 (en) * | 2018-05-31 | 2020-09-29 | Hewlett Packard Enterprise Development Lp | Insight usage across computing nodes running containerized analytics |
CN111260018B (zh) * | 2018-11-30 | 2022-03-22 | 上海寒武纪信息科技有限公司 | 机器学习二级模型文件生成方法、装置、存储介质 |
WO2019233231A1 (zh) | 2018-06-08 | 2019-12-12 | 上海寒武纪信息科技有限公司 | 通用机器学习模型、模型文件的生成和解析方法 |
US10802719B2 (en) * | 2018-06-11 | 2020-10-13 | Wipro Limited | Method and system for data compression and data storage optimization |
US11115490B2 (en) * | 2018-07-31 | 2021-09-07 | EMC IP Holding Company LLC | Host based read cache for san supporting NVMEF with E2E validation |
JP6878369B2 (ja) * | 2018-09-03 | 2021-05-26 | 株式会社日立製作所 | ボリューム配置管理装置、ボリューム配置管理方法、及びボリューム配置管理プログラム |
US10893120B2 (en) * | 2018-09-19 | 2021-01-12 | International Business Machines Corporation | Data caching and data-aware placement to accelerate machine learning applications |
CN109343833B (zh) * | 2018-09-20 | 2022-12-16 | 鼎富智能科技有限公司 | 数据处理平台以及数据处理方法 |
US11062042B1 (en) | 2018-09-26 | 2021-07-13 | Splunk Inc. | Authenticating data associated with a data intake and query system using a distributed ledger system |
US20240177536A9 (en) * | 2018-09-30 | 2024-05-30 | Strong Force Tp Portfolio 2022, Llc | Intelligent transportation systems including digital twin interface for a passenger vehicle |
KR20200044173A (ko) | 2018-10-05 | 2020-04-29 | 삼성전자주식회사 | 전자 장치 및 그의 제어 방법 |
US11003999B1 (en) | 2018-11-09 | 2021-05-11 | Bottomline Technologies, Inc. | Customized automated account opening decisioning using machine learning |
US11139980B2 (en) * | 2018-11-28 | 2021-10-05 | International Business Machines Corporation | Immutably storing computational determinations using distributed ledgers |
US11303454B2 (en) | 2018-11-28 | 2022-04-12 | International Business Machines Corporation | Producing and verifying computational determinations using a distributed ledger |
CN109617992B (zh) * | 2018-12-29 | 2021-08-03 | 杭州趣链科技有限公司 | 一种基于区块链的边缘计算节点动态选举方法 |
KR20210099564A (ko) * | 2018-12-31 | 2021-08-12 | 인텔 코포레이션 | 인공 지능을 이용한 보안 시스템 |
CN109861789B (zh) * | 2019-01-15 | 2021-09-07 | 北京临近空间飞行器系统工程研究所 | 一种适应慢记快发的流水线遥测数据批量处理系统 |
US11150720B2 (en) | 2019-02-04 | 2021-10-19 | Sateesh Kumar Addepalli | Systems and methods for power management of hardware utilizing virtual multilane architecture |
US11507662B2 (en) | 2019-02-04 | 2022-11-22 | Sateesh Kumar Addepalli | Systems and methods of security for trusted artificial intelligence hardware processing |
US11650961B2 (en) | 2019-02-04 | 2023-05-16 | Red Hat, Inc. | Managing replica unavailability in a distributed file system |
US11544525B2 (en) | 2019-02-04 | 2023-01-03 | Sateesh Kumar Addepalli | Systems and methods for artificial intelligence with a flexible hardware processing framework |
US11477266B1 (en) | 2019-02-14 | 2022-10-18 | Sprint Communications Company L.P. | Data communication system to selectively and securely couple distributed ledgers with artificial intelligence (AI) engines |
US11423454B2 (en) | 2019-02-15 | 2022-08-23 | Sateesh Kumar Addepalli | Real-time customizable AI model collaboration and marketplace service over a trusted AI model network |
CN109785180A (zh) * | 2019-02-19 | 2019-05-21 | 山东大学 | 一种面向数字孪生车间的场景感知系统及方法 |
US20200265509A1 (en) * | 2019-02-19 | 2020-08-20 | Pathtronic Inc. | Secure and trusted multi-tenant service delivery platform for distributed multitenant-capable ai solution model compute processors |
US11061738B2 (en) * | 2019-02-28 | 2021-07-13 | Movidius Limited | Methods and apparatus to store and access multi dimensional data |
US11409990B1 (en) | 2019-03-01 | 2022-08-09 | Bottomline Technologies (De) Inc. | Machine learning archive mechanism using immutable storage |
US11182686B2 (en) | 2019-03-01 | 2021-11-23 | Samsung Electronics Co., Ltd | 4T4R ternary weight cell with high on/off ratio background |
EP3940567A4 (en) * | 2019-03-15 | 2023-03-22 | Geek Guild Co., Ltd. | TRANSFORMATION SYSTEM, PROCESS AND PROGRAM |
US11783176B2 (en) * | 2019-03-25 | 2023-10-10 | Western Digital Technologies, Inc. | Enhanced storage device memory architecture for machine learning |
US10929058B2 (en) | 2019-03-25 | 2021-02-23 | Western Digital Technologies, Inc. | Enhanced memory device architecture for machine learning |
US11676063B2 (en) * | 2019-03-28 | 2023-06-13 | International Business Machines Corporation | Exposing payload data from non-integrated machine learning systems |
CN111832738B (zh) * | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
USD956087S1 (en) | 2019-04-23 | 2022-06-28 | Bottomline Technologies, Inc | Display screen or portion thereof with a payment transaction graphical user interface |
US11269859B1 (en) * | 2019-05-22 | 2022-03-08 | Splunk Inc. | Correlating different types of data of a distributed ledger system |
US11507562B1 (en) | 2019-05-22 | 2022-11-22 | Splunk Inc. | Associating data from different nodes of a distributed ledger system |
US11663685B2 (en) | 2019-06-18 | 2023-05-30 | The Calany Holding S. À R.L. | System and method for providing digital reality experiences and decentralized transactions of real estate projects |
US11650719B2 (en) | 2019-06-18 | 2023-05-16 | The Calany Holding S.À.R.L. | Virtual creation of real-world projects |
US11687807B1 (en) | 2019-06-26 | 2023-06-27 | Bottomline Technologies, Inc. | Outcome creation based upon synthesis of history |
US10970169B2 (en) * | 2019-06-27 | 2021-04-06 | General Electric Company | Data configuration management system for an engine |
CN112148663A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 一种数据交换芯片及服务器 |
US11635990B2 (en) | 2019-07-01 | 2023-04-25 | Nutanix, Inc. | Scalable centralized manager including examples of data pipeline deployment to an edge system |
US11003501B2 (en) | 2019-07-03 | 2021-05-11 | Advanced New Technologies Co., Ltd. | Loading models on nodes having multiple model service frameworks |
US11501881B2 (en) | 2019-07-03 | 2022-11-15 | Nutanix, Inc. | Apparatus and method for deploying a mobile device as a data source in an IoT system |
US10963828B2 (en) | 2019-07-19 | 2021-03-30 | Capital One Services, Llc | Identifying and managing enterprise product availability |
US10810528B1 (en) * | 2019-07-19 | 2020-10-20 | Capital One Services, Llc | Identifying and utilizing the availability of enterprise resources |
US10904100B1 (en) * | 2019-07-19 | 2021-01-26 | Juniper Networks, Inc | Systems and method for replaying and debugging live states of network devices |
EP4004740A4 (en) * | 2019-07-25 | 2023-04-19 | Hewlett-Packard Development Company, L.P. | WORKLOAD PERFORMANCE PREDICTION |
US11461676B2 (en) | 2019-07-31 | 2022-10-04 | EMC IP Holding Company LLC | Machine learning-based recommendation engine for storage system usage within an enterprise |
US10956059B2 (en) * | 2019-07-31 | 2021-03-23 | EMC IP Holding Company LLC | Classification of storage systems and users thereof using machine learning techniques |
CN110442389B (zh) * | 2019-08-07 | 2024-01-09 | 北京技德系统技术有限公司 | 一种多桌面环境共享使用gpu的方法 |
CN110737517A (zh) * | 2019-08-14 | 2020-01-31 | 广西电网电力调度控制中心 | 一种电力系统云平台计算分析微服务资源调度方法 |
CN111104459A (zh) | 2019-08-22 | 2020-05-05 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
EP3786783A1 (fr) * | 2019-08-30 | 2021-03-03 | Bull SAS | Systeme d'aide a la conception d'application d'intelligence artificielle, executable sur des plates-formes informatiques distribuees |
US11514361B2 (en) * | 2019-08-30 | 2022-11-29 | International Business Machines Corporation | Automated artificial intelligence radial visualization |
EP3682340A4 (en) | 2019-09-12 | 2020-12-02 | Advanced New Technologies Co., Ltd. | LOG-STRUCTURED STORAGE SYSTEMS |
US10942852B1 (en) | 2019-09-12 | 2021-03-09 | Advanced New Technologies Co., Ltd. | Log-structured storage systems |
CN111886591A (zh) | 2019-09-12 | 2020-11-03 | 创新先进技术有限公司 | 日志结构存储系统 |
WO2019228574A2 (en) * | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
WO2019228569A2 (en) * | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
WO2019228568A2 (en) | 2019-09-12 | 2019-12-05 | Alibaba Group Holding Limited | Log-structured storage systems |
CN111183420B (zh) | 2019-09-12 | 2023-06-30 | 创新先进技术有限公司 | 日志结构存储系统 |
SG11202002775RA (en) | 2019-09-12 | 2020-04-29 | Alibaba Group Holding Ltd | Log-structured storage systems |
WO2019233500A2 (en) | 2019-09-12 | 2019-12-12 | Alibaba Group Holding Limited | Log-structured storage systems |
CN110650609B (zh) * | 2019-10-10 | 2020-12-01 | 珠海与非科技有限公司 | 一种分布式储存的云服务器 |
US11347613B2 (en) | 2019-10-15 | 2022-05-31 | UiPath, Inc. | Inserting probabilistic models in deterministic workflows for robotic process automation and supervisor system |
CN110990256B (zh) * | 2019-10-29 | 2023-09-05 | 中移(杭州)信息技术有限公司 | 开源代码检测方法、装置及计算机可读存储介质 |
US11240045B2 (en) * | 2019-10-30 | 2022-02-01 | Red Hat, Inc. | Detection and prevention of unauthorized execution of severless functions |
US11237941B2 (en) * | 2019-12-12 | 2022-02-01 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for application transformation to cloud based on semi-automated workflow |
US11899570B2 (en) | 2019-12-12 | 2024-02-13 | Cognizant Technology Solutions India Pvt. Ltd. | System and method for optimizing assessment and implementation of microservices code for cloud platforms |
US12014195B2 (en) | 2019-12-12 | 2024-06-18 | Cognizant Technology Solutions India Pvt. Ltd. | System for providing an adaptable plugin framework for application transformation to cloud |
FR3105464A1 (fr) * | 2019-12-23 | 2021-06-25 | Bull Sas | Methode et Système informatique de validation d’une infrastructure informatique par minage |
CN111241112B (zh) * | 2019-12-27 | 2023-05-23 | 山大地纬软件股份有限公司 | 一种保证幂等的微服务调用监管系统及方法 |
US11972361B2 (en) * | 2020-01-29 | 2024-04-30 | Samsung Electronics Co., Ltd. | Performance optimization of object grouping schema in a network key-value storage device using adaptive regression |
US11620294B2 (en) * | 2020-01-30 | 2023-04-04 | Panasonic Avionics Corporation | Dynamic media data management |
CN111444516B (zh) * | 2020-03-23 | 2023-03-24 | 华南理工大学 | 一种基于敏感度的深度强化学习智能体攻击方法 |
US11228645B2 (en) * | 2020-03-27 | 2022-01-18 | Microsoft Technology Licensing, Llc | Digital twin of IT infrastructure |
CN111459635B (zh) * | 2020-03-31 | 2022-03-29 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
US11670406B2 (en) | 2020-04-29 | 2023-06-06 | Fujifilm Medical Systems U.S.A., Inc. | Systems and methods for removing personal data from digital records |
EP3916556B1 (en) * | 2020-05-29 | 2023-05-03 | Ovh | Method and system for detecting anomalies in a data pipeline |
WO2021248423A1 (zh) * | 2020-06-12 | 2021-12-16 | 华为技术有限公司 | 人工智能资源的调度方法、装置、存储介质和芯片 |
US11861469B2 (en) | 2020-07-02 | 2024-01-02 | International Business Machines Corporation | Code generation for Auto-AI |
CN111949211B (zh) | 2020-07-10 | 2023-05-09 | 深圳宏芯宇电子股份有限公司 | 存储装置及存储控制方法 |
CN111857602B (zh) * | 2020-07-31 | 2022-10-28 | 重庆紫光华山智安科技有限公司 | 数据处理方法、装置、数据节点及存储介质 |
CN112053754A (zh) * | 2020-08-19 | 2020-12-08 | 杭州古珀医疗科技有限公司 | 基于自然语言的非结构医疗数据转结构数据系统及其方法 |
US20220058519A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Open feature library management |
US11651096B2 (en) | 2020-08-24 | 2023-05-16 | Burstiq, Inc. | Systems and methods for accessing digital assets in a blockchain using global consent contracts |
CN112232469A (zh) * | 2020-09-29 | 2021-01-15 | 深圳宏芯宇电子股份有限公司 | 存储卡及电子设备 |
CN112506423B (zh) * | 2020-11-02 | 2021-07-20 | 北京迅达云成科技有限公司 | 一种云储存系统中动态接入存储设备的方法及装置 |
CN112258244B (zh) * | 2020-11-06 | 2024-05-03 | 微医云(杭州)控股有限公司 | 确定目标物品所属任务的方法、装置、设备及存储介质 |
US11726764B2 (en) | 2020-11-11 | 2023-08-15 | Nutanix, Inc. | Upgrade systems for service domains |
US11665221B2 (en) | 2020-11-13 | 2023-05-30 | Nutanix, Inc. | Common services model for multi-cloud platform |
US11880347B2 (en) * | 2020-11-23 | 2024-01-23 | Microsoft Technology Licensing, Llc. | Tuning large data infrastructures |
CN112463375A (zh) * | 2020-11-26 | 2021-03-09 | 广州橙行智动汽车科技有限公司 | 一种数据处理的方法和装置 |
CN112579194B (zh) * | 2020-11-27 | 2023-04-07 | 国网河南省电力公司信息通信公司 | 基于时延和事务吞吐量的区块链共识任务卸载方法及装置 |
US11620262B2 (en) | 2020-11-30 | 2023-04-04 | International Business Machines Corporation | Generation of a metadata-driven artificial intelligence platform |
US11645104B2 (en) * | 2020-12-22 | 2023-05-09 | Reliance Jio Infocomm Usa, Inc. | Intelligent data plane acceleration by offloading to distributed smart network interfaces |
US11385798B1 (en) * | 2020-12-28 | 2022-07-12 | Lightbits Labs Ltd. | Method and system for application aware, management of write operations on non-volatile storage |
CN112822447B (zh) * | 2021-01-07 | 2023-04-14 | 云南电网有限责任公司电力科学研究院 | 一种基于5g网络的机器人远程监控视频传输方法及系统 |
CN112347015B (zh) * | 2021-01-08 | 2021-04-02 | 南京芯驰半导体科技有限公司 | 芯片片上系统异构多处理器间的通信装置及方法 |
CN112668054A (zh) * | 2021-01-15 | 2021-04-16 | 长沙理工大学 | 一种基于张量分解的数据流量隐私保护恢复方法及设备 |
US11736585B2 (en) | 2021-02-26 | 2023-08-22 | Nutanix, Inc. | Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications |
CN112906907B (zh) * | 2021-03-24 | 2024-02-23 | 成都工业学院 | 一种机器学习管道模型分层化管理和分发的方法及系统 |
US11798551B2 (en) | 2021-03-25 | 2023-10-24 | Bank Of America Corporation | System and method for voice controlled automatic information access and retrieval |
US11782974B2 (en) | 2021-03-25 | 2023-10-10 | Bank Of America Corporation | System and method for dynamically identifying and retrieving information responsive to voice requests |
US11657819B2 (en) | 2021-03-25 | 2023-05-23 | Bank Of America Corporation | Selective use of tools for automatically identifying, accessing, and retrieving information responsive to voice requests |
CN113111201B (zh) * | 2021-04-19 | 2022-02-11 | 北京航空航天大学 | 一种数字孪生模型轻量化方法和系统 |
TWI810560B (zh) * | 2021-05-10 | 2023-08-01 | 中國信託商業銀行股份有限公司 | 基於雲端微服務的人工智慧模型服務方法及伺服器 |
CN115412441A (zh) * | 2021-05-26 | 2022-11-29 | 中国移动通信有限公司研究院 | 软件定义的分组传送网的带宽控制方法及设备 |
CA3214385A1 (en) * | 2021-06-11 | 2022-12-15 | Arulkumaran CHANDRASEKARAN | Data pipeline and access across multiple machine learned models |
US20230052225A1 (en) * | 2021-08-13 | 2023-02-16 | Deep Labs Inc. | Methods and computer systems for automated event detection based on machine learning |
US20230066835A1 (en) * | 2021-08-27 | 2023-03-02 | Keysight Technologies, Inc. | Methods, systems and computer readable media for improving remote direct memory access performance |
CN113568713A (zh) * | 2021-09-22 | 2021-10-29 | 国汽智控(北京)科技有限公司 | 基于自动驾驶系统的数据处理方法、装置、设备及产品 |
WO2023069050A1 (en) * | 2021-10-22 | 2023-04-27 | Havelsan Hava Elektronik San. Ve Tic. A.S. | Blockchain and distributed ledger technology-based model and data set management method |
CN113946292B (zh) * | 2021-10-29 | 2023-10-24 | 南京审计大学 | 一种基于强化学习的频繁写缓存数据压缩方法 |
CN114021036A (zh) * | 2021-11-15 | 2022-02-08 | 平安银行股份有限公司 | 网点筛选方法、装置、设备及存储介质 |
US11797408B2 (en) * | 2021-12-30 | 2023-10-24 | Juniper Networks, Inc. | Dynamic prediction of system resource requirement of network software in a live network using data driven models |
CN114661362B (zh) * | 2022-03-01 | 2023-11-03 | 深圳开源互联网安全技术有限公司 | 一种基于DevSecOps的流水线实现方法和系统 |
US20230401192A1 (en) * | 2022-06-13 | 2023-12-14 | The Toronto-Dominion Bank | Systems and methods for optimizing data processing in a distributed computing environment |
CN114758042B (zh) * | 2022-06-14 | 2022-09-02 | 深圳智华科技发展有限公司 | 新的虚拟仿真引擎、虚拟仿真方法以及装置 |
US11811681B1 (en) * | 2022-07-12 | 2023-11-07 | T-Mobile Usa, Inc. | Generating and deploying software architectures using telecommunication resources |
WO2024065816A1 (en) * | 2022-09-30 | 2024-04-04 | Intel Corporation | High fidelity attestation-based artificial intelligence inference system |
CN116010241B (zh) * | 2022-11-17 | 2023-09-22 | 北京东方通科技股份有限公司 | 一种可扩展的DevOps持续交付系统及其方法 |
CN115858246B (zh) * | 2022-12-27 | 2023-11-21 | 安超云软件有限公司 | 一种容灾演练方法、装置、设备及存储介质 |
CN116074179B (zh) * | 2023-03-06 | 2023-07-14 | 鹏城实验室 | 基于cpu-npu协同的高扩展节点系统及训练方法 |
CN117439223B (zh) * | 2023-10-27 | 2024-06-07 | 南通沃太新能源有限公司 | 一种储能系统的安全控制方法及系统 |
CN117809629B (zh) * | 2024-02-29 | 2024-05-24 | 青岛海尔科技有限公司 | 基于大模型的交互系统更新方法、装置及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743003B1 (en) * | 2007-05-16 | 2010-06-22 | Google Inc. | Scaling machine learning using approximate counting that uses feature hashing |
WO2014145149A1 (en) * | 2013-03-15 | 2014-09-18 | Genesys Telecommunications Laboratories, Inc. | Intelligent automated agent for a contact center |
CN104813614A (zh) * | 2012-12-03 | 2015-07-29 | 惠普发展公司,有限责任合伙企业 | 用于iaas的管理的异步框架 |
CN105893583A (zh) * | 2016-04-01 | 2016-08-24 | 北京鼎泰智源科技有限公司 | 基于人工智能的数据采集方法及系统 |
WO2017120579A1 (en) * | 2016-01-10 | 2017-07-13 | Presenso, Ltd. | System and method for validating unsupervised machine learning models |
Family Cites Families (229)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651133A (en) | 1995-02-01 | 1997-07-22 | Hewlett-Packard Company | Methods for avoiding over-commitment of virtual capacity in a redundant hierarchic data storage system |
JPH08242229A (ja) | 1995-03-01 | 1996-09-17 | Fujitsu Ltd | ネットワーク監視における状態整合処理システム |
US5799200A (en) | 1995-09-28 | 1998-08-25 | Emc Corporation | Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller |
US6012032A (en) | 1995-11-30 | 2000-01-04 | Electronic Data Systems Corporation | System and method for accounting of computer data storage utilization |
US5933598A (en) | 1996-07-17 | 1999-08-03 | Digital Equipment Corporation | Method for sharing variable-grained memory of workstations by sending particular block including line and size of the block to exchange shared data structures |
US6085333A (en) | 1997-12-19 | 2000-07-04 | Lsi Logic Corporation | Method and apparatus for synchronization of code in redundant controllers in a swappable environment |
US6647514B1 (en) | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
US6643641B1 (en) | 2000-04-27 | 2003-11-04 | Russell Snyder | Web search engine with graphic snapshots |
JP2002041305A (ja) | 2000-07-26 | 2002-02-08 | Hitachi Ltd | 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム |
US6789162B1 (en) | 2000-10-17 | 2004-09-07 | Sun Microsystems, Inc. | Storage controller configured to select unused regions of a storage device for data storage according to head position |
US6917947B2 (en) | 2001-06-21 | 2005-07-12 | Kevin Wade Jameson | Collection command applicator |
US6857045B2 (en) | 2002-01-25 | 2005-02-15 | International Business Machines Corporation | Method and system for updating data in a compressed read cache |
US6728738B2 (en) | 2002-04-03 | 2004-04-27 | Sun Microsystems, Inc. | Fast lifetime analysis of objects in a garbage-collected system |
US6895464B2 (en) | 2002-06-03 | 2005-05-17 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows |
US7334124B2 (en) | 2002-07-22 | 2008-02-19 | Vormetric, Inc. | Logical access block processing protocol for transparent secure file storage |
US7146521B1 (en) | 2002-08-21 | 2006-12-05 | 3Pardata, Inc. | Preventing damage of storage devices and data loss in a data storage system |
US7107389B2 (en) | 2002-08-29 | 2006-09-12 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory device and method for writing data into flash memory |
US20040153844A1 (en) | 2002-10-28 | 2004-08-05 | Gautam Ghose | Failure analysis method and system for storage area networks |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
US7072905B2 (en) | 2002-12-06 | 2006-07-04 | Sun Microsystems, Inc. | Better placement of objects reachable from outside a generation managed by the train algorithm |
US20040187111A1 (en) | 2003-02-21 | 2004-09-23 | Eakin William Joseph | Content management portal and method for communicating media content |
US7181580B2 (en) | 2003-03-27 | 2007-02-20 | International Business Machines Corporation | Secure pointers |
WO2004095201A2 (en) | 2003-04-09 | 2004-11-04 | Intervideo Inc. | Systems and methods for caching multimedia data |
US7437530B1 (en) | 2003-04-24 | 2008-10-14 | Network Appliance, Inc. | System and method for mapping file block numbers to logical block addresses |
CA2429909A1 (en) | 2003-05-27 | 2004-11-27 | Cognos Incorporated | Transformation of tabular and cross-tabulated queries based upon e/r schema into multi-dimensional expression queries |
US7434097B2 (en) | 2003-06-05 | 2008-10-07 | Copan System, Inc. | Method and apparatus for efficient fault-tolerant disk drive replacement in raid storage systems |
US7032089B1 (en) | 2003-06-09 | 2006-04-18 | Veritas Operating Corporation | Replica synchronization using copy-on-read technique |
US7089272B1 (en) | 2003-06-18 | 2006-08-08 | Sun Microsystems, Inc. | Specializing write-barriers for objects in a garbage collected heap |
US7434214B2 (en) | 2004-01-21 | 2008-10-07 | International Business Machines Corporation | Method for determining a close approximate benefit of reducing memory footprint of a Java application |
US20050188246A1 (en) | 2004-02-25 | 2005-08-25 | Emberty Robert G. | Persistent worldwide names assigned to removable media storage |
US7526684B2 (en) | 2004-03-24 | 2009-04-28 | Seagate Technology Llc | Deterministic preventive recovery from a predicted failure in a distributed storage system |
US7493424B1 (en) | 2004-04-30 | 2009-02-17 | Netapp, Inc. | Network storage system with shared software stack for LDMA and RDMA |
JP4392601B2 (ja) | 2004-05-07 | 2010-01-06 | パナソニック株式会社 | データアクセス装置および記録媒体 |
US8042163B1 (en) | 2004-05-20 | 2011-10-18 | Symatec Operating Corporation | Secure storage access using third party capability tokens |
US7533292B2 (en) | 2004-07-15 | 2009-05-12 | International Business Machines Corporation | Management method for spare disk drives in a raid system |
US7953979B2 (en) | 2004-12-15 | 2011-05-31 | Exostar Corporation | Systems and methods for enabling trust in a federated collaboration |
US7426623B2 (en) | 2005-01-14 | 2008-09-16 | Sandisk Il Ltd | System and method for configuring flash memory partitions as super-units |
US20060230245A1 (en) | 2005-04-08 | 2006-10-12 | Microsoft Corporation | Data storage safety indicator and expander |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
WO2006116183A1 (en) | 2005-04-25 | 2006-11-02 | Network Appliance, Inc. | Architecture for supporting sparse volumes |
US7366825B2 (en) | 2005-04-26 | 2008-04-29 | Microsoft Corporation | NAND flash memory management |
JP4506594B2 (ja) | 2005-07-22 | 2010-07-21 | 日本電気株式会社 | 冗長パス制御方法 |
US7694082B2 (en) | 2005-07-29 | 2010-04-06 | International Business Machines Corporation | Computer program and method for managing resources in a distributed storage system |
US7617216B2 (en) | 2005-09-07 | 2009-11-10 | Emc Corporation | Metadata offload for a file server cluster |
ITVA20050061A1 (it) | 2005-11-08 | 2007-05-09 | St Microelectronics Srl | Metodo di gestione di un dispositivo di memoria non volatile e relativa memoria |
EP1960903A4 (en) | 2005-11-28 | 2009-01-28 | Commvault Systems Inc | SYSTEMS AND METHOD FOR CLASSIFICATION AND TRANSFER OF INFORMATION IN A STORAGE NETWORK |
US7831783B2 (en) | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
US7421552B2 (en) | 2006-03-17 | 2008-09-02 | Emc Corporation | Techniques for managing data within a data storage system utilizing a flash-based memory vault |
US7899780B1 (en) | 2006-03-30 | 2011-03-01 | Emc Corporation | Methods and apparatus for structured partitioning of management information |
US20070294564A1 (en) | 2006-04-27 | 2007-12-20 | Tim Reddin | High availability storage system |
US8266472B2 (en) | 2006-05-03 | 2012-09-11 | Cisco Technology, Inc. | Method and system to provide high availability of shared data |
US9455955B2 (en) | 2006-05-17 | 2016-09-27 | Richard Fetik | Customizable storage controller with integrated F+ storage firewall protection |
US7743239B2 (en) | 2006-06-30 | 2010-06-22 | Intel Corporation | Accelerating integrity checks of code and data stored in non-volatile memory |
US8648867B2 (en) | 2006-09-25 | 2014-02-11 | Neurala Llc | Graphic processor based accelerator system and method |
US7627786B2 (en) | 2006-09-26 | 2009-12-01 | International Business Machines Corporation | Tracking error events relating to data storage drives and/or media of automated data storage library subsystems |
US7606813B1 (en) | 2006-09-27 | 2009-10-20 | Emc Corporation | Model consolidation in a database schema |
US8620970B2 (en) | 2006-10-03 | 2013-12-31 | Network Appliance, Inc. | Methods and apparatus for changing versions of a filesystem |
US7669029B1 (en) | 2006-11-15 | 2010-02-23 | Network Appliance, Inc. | Load balancing a data storage system |
US8484252B2 (en) | 2006-11-30 | 2013-07-09 | International Business Machines Corporation | Generation of a multidimensional dataset from an associative database |
US7710777B1 (en) | 2006-12-20 | 2010-05-04 | Marvell International Ltd. | Semi-volatile NAND flash memory |
US7640332B2 (en) | 2006-12-27 | 2009-12-29 | Hewlett-Packard Development Company, L.P. | System and method for hot deployment/redeployment in grid computing environment |
KR100923990B1 (ko) | 2007-02-13 | 2009-10-28 | 삼성전자주식회사 | 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템 |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US7996599B2 (en) | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US7991942B2 (en) | 2007-05-09 | 2011-08-02 | Stmicroelectronics S.R.L. | Memory block compaction method, circuit, and system in storage devices based on flash memories |
US7870360B2 (en) | 2007-09-14 | 2011-01-11 | International Business Machines Corporation | Storage area network (SAN) forecasting in a heterogeneous environment |
KR101433859B1 (ko) | 2007-10-12 | 2014-08-27 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법 |
US8271700B1 (en) | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US7743191B1 (en) | 2007-12-20 | 2010-06-22 | Pmc-Sierra, Inc. | On-chip shared memory based device architecture |
JP4471007B2 (ja) | 2008-02-05 | 2010-06-02 | ソニー株式会社 | 記録装置、記録装置の制御方法、記録装置の制御方法のプログラム及び記録装置の制御方法のプログラムを記録した記録媒体 |
US8949863B1 (en) | 2008-04-30 | 2015-02-03 | Netapp, Inc. | Creating environmental snapshots of storage device failure events |
US8093868B2 (en) | 2008-09-04 | 2012-01-10 | International Business Machines Corporation | In situ verification of capacitive power support |
US8086585B1 (en) | 2008-09-30 | 2011-12-27 | Emc Corporation | Access control to block storage devices for a shared disk based file system |
US9473419B2 (en) | 2008-12-22 | 2016-10-18 | Ctera Networks, Ltd. | Multi-tenant cloud storage system |
US8762642B2 (en) | 2009-01-30 | 2014-06-24 | Twinstrata Inc | System and method for secure and reliable multi-cloud data replication |
JP4844639B2 (ja) | 2009-02-19 | 2011-12-28 | Tdk株式会社 | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 |
US9134922B2 (en) | 2009-03-12 | 2015-09-15 | Vmware, Inc. | System and method for allocating datastores for virtual machines |
KR101586047B1 (ko) | 2009-03-25 | 2016-01-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
US8805953B2 (en) | 2009-04-03 | 2014-08-12 | Microsoft Corporation | Differential file and system restores from peers and the cloud |
TWI408689B (zh) | 2009-04-14 | 2013-09-11 | Jmicron Technology Corp | 存取儲存裝置的方法及相關控制電路 |
JP4874368B2 (ja) | 2009-06-22 | 2012-02-15 | 株式会社日立製作所 | フラッシュメモリを用いたストレージシステムの管理方法及び計算機 |
US7948798B1 (en) | 2009-07-22 | 2011-05-24 | Marvell International Ltd. | Mixed multi-level cell and single level cell storage device |
US8402242B2 (en) | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
CA2679747A1 (en) * | 2009-08-20 | 2011-02-20 | Show Me Energy Cooperative | Method for making biomass pellets |
US8868957B2 (en) | 2009-09-24 | 2014-10-21 | Xyratex Technology Limited | Auxiliary power supply, a method of providing power to a data storage system and a back-up power supply charging circuit |
TWI428917B (zh) | 2009-11-25 | 2014-03-01 | Silicon Motion Inc | 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法 |
US8250324B2 (en) | 2009-11-30 | 2012-08-21 | International Business Machines Corporation | Method to efficiently locate meta-data structures on a flash-based storage device |
US8387136B2 (en) | 2010-01-05 | 2013-02-26 | Red Hat, Inc. | Role-based access control utilizing token profiles |
US8452932B2 (en) | 2010-01-06 | 2013-05-28 | Storsimple, Inc. | System and method for efficiently creating off-site data volume back-ups |
US8285762B2 (en) | 2010-05-11 | 2012-10-09 | International Business Machines Corporation | Migration of metadata and storage management of data in a first storage environment to a second storage environment |
US20120023144A1 (en) | 2010-07-21 | 2012-01-26 | Seagate Technology Llc | Managing Wear in Flash Memory |
US20120054264A1 (en) | 2010-08-31 | 2012-03-01 | International Business Machines Corporation | Techniques for Migrating Active I/O Connections with Migrating Servers and Clients |
US8566546B1 (en) | 2010-09-27 | 2013-10-22 | Emc Corporation | Techniques for enforcing capacity restrictions of an allocation policy |
US9263102B2 (en) | 2010-09-28 | 2016-02-16 | SanDisk Technologies, Inc. | Apparatus, system, and method for data transformations within a data storage device |
US8775868B2 (en) | 2010-09-28 | 2014-07-08 | Pure Storage, Inc. | Adaptive RAID for an SSD environment |
US8949502B2 (en) | 2010-11-18 | 2015-02-03 | Nimble Storage, Inc. | PCIe NVRAM card based on NVDIMM |
US8812860B1 (en) | 2010-12-03 | 2014-08-19 | Symantec Corporation | Systems and methods for protecting data stored on removable storage devices by requiring external user authentication |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US8589723B2 (en) | 2010-12-22 | 2013-11-19 | Intel Corporation | Method and apparatus to provide a high availability solid state drive |
US8369893B2 (en) | 2010-12-31 | 2013-02-05 | Motorola Mobility Llc | Method and system for adapting mobile device to accommodate external display |
US8465332B2 (en) | 2011-01-13 | 2013-06-18 | Tyco Electronics Corporation | Contact assembly for an electrical connector |
US8578442B1 (en) | 2011-03-11 | 2013-11-05 | Symantec Corporation | Enforcing consistent enterprise and cloud security profiles |
US20170249729A1 (en) | 2011-05-09 | 2017-08-31 | Level 3 Inspection, Llc | Automated optical metrology computer aided inspection station and method of operation |
US8738882B2 (en) | 2011-06-03 | 2014-05-27 | Apple Inc. | Pre-organization of data |
US8751463B1 (en) | 2011-06-30 | 2014-06-10 | Emc Corporation | Capacity forecasting for a deduplicating storage system |
US8769622B2 (en) | 2011-06-30 | 2014-07-01 | International Business Machines Corporation | Authentication and authorization methods for cloud computing security |
US8560531B2 (en) | 2011-07-01 | 2013-10-15 | International Business Machines Corporation | Search tool that utilizes scientific metadata matched against user-entered parameters |
US8898157B2 (en) | 2011-07-25 | 2014-11-25 | Path, Inc. | Systems and methods for providing search relevancy in communication initiation searches |
WO2013016013A1 (en) | 2011-07-27 | 2013-01-31 | Cleversafe, Inc. | Generating dispersed storage network event records |
US8931041B1 (en) | 2011-07-29 | 2015-01-06 | Symantec Corporation | Method and system for visibility and control over access transactions between clouds using resource authorization messages |
US20130036272A1 (en) | 2011-08-02 | 2013-02-07 | Microsoft Corporation | Storage engine node for cloud-based storage |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9525900B2 (en) | 2011-09-15 | 2016-12-20 | Google Inc. | Video management system |
JP2013077278A (ja) | 2011-09-16 | 2013-04-25 | Toshiba Corp | メモリ・デバイス |
US9578014B2 (en) | 2011-09-29 | 2017-02-21 | Oracle International Corporation | Service profile-specific token attributes and resource server token attribute overriding |
RU2014115995A (ru) | 2011-10-24 | 2015-12-10 | Шнейдер Электрик Эндюстри Сас | Системы и способы дистанционной передачи данных |
WO2013071087A1 (en) | 2011-11-09 | 2013-05-16 | Unisys Corporation | Single sign on for cloud |
US20130311434A1 (en) | 2011-11-17 | 2013-11-21 | Marc T. Jones | Method, apparatus and system for data deduplication |
US9330245B2 (en) | 2011-12-01 | 2016-05-03 | Dashlane SAS | Cloud-based data backup and sync with secure local storage of access keys |
US8656180B2 (en) | 2011-12-06 | 2014-02-18 | Wwpass Corporation | Token activation |
US20130219164A1 (en) | 2011-12-29 | 2013-08-22 | Imation Corp. | Cloud-based hardware security modules |
US8613066B1 (en) | 2011-12-30 | 2013-12-17 | Amazon Technologies, Inc. | Techniques for user authentication |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US9423983B2 (en) | 2012-01-19 | 2016-08-23 | Syncsort Incorporated | Intelligent storage controller |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
JP2013161235A (ja) | 2012-02-03 | 2013-08-19 | Fujitsu Ltd | ストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラム |
US10474584B2 (en) | 2012-04-30 | 2019-11-12 | Hewlett Packard Enterprise Development Lp | Storing cache metadata separately from integrated circuit containing cache controller |
US11082350B2 (en) | 2012-05-22 | 2021-08-03 | Xockets, Inc. | Network server systems, architectures, components and related methods |
US8832372B2 (en) | 2012-05-24 | 2014-09-09 | Netapp, Inc. | Network storage systems having clustered raids for improved redundancy and load balancing |
WO2013188382A2 (en) | 2012-06-12 | 2013-12-19 | Centurylink Intellectual Property Llc | High performance cloud storage |
EP2868037A4 (en) | 2012-06-29 | 2016-01-20 | Hewlett Packard Development Co | AUTOMATED CONTROL-BASED TEST DATA GENERATION |
US9130927B2 (en) | 2012-07-02 | 2015-09-08 | Sk Planet Co., Ltd. | Single certificate service system and operational method thereof |
JP2014021570A (ja) | 2012-07-12 | 2014-02-03 | Sony Computer Entertainment Inc | 動画像生成装置 |
US9047181B2 (en) | 2012-09-07 | 2015-06-02 | Splunk Inc. | Visualization of data from clusters |
US8769651B2 (en) | 2012-09-19 | 2014-07-01 | Secureauth Corporation | Mobile multifactor single-sign-on authentication |
US9462502B2 (en) | 2012-09-25 | 2016-10-04 | Empire Technology Development Llc | Limiting data usage of a device connected to the internet via tethering |
US9245144B2 (en) | 2012-09-27 | 2016-01-26 | Intel Corporation | Secure data container for web applications |
US8990914B2 (en) | 2012-09-28 | 2015-03-24 | Intel Corporation | Device, method, and system for augmented reality security |
US8990905B1 (en) | 2012-09-28 | 2015-03-24 | Emc Corporation | Protected resource access control utilizing intermediate values of a hash chain |
US8850546B1 (en) | 2012-09-30 | 2014-09-30 | Emc Corporation | Privacy-preserving user attribute release and session management |
US20140101434A1 (en) | 2012-10-04 | 2014-04-10 | Msi Security, Ltd. | Cloud-based file distribution and management using real identity authentication |
US9209973B2 (en) | 2012-11-20 | 2015-12-08 | Google Inc. | Delegate authorization in cloud-based storage system |
US9734220B2 (en) | 2012-12-04 | 2017-08-15 | Planet Os Inc. | Spatio-temporal data processing systems and methods |
US8997197B2 (en) | 2012-12-12 | 2015-03-31 | Citrix Systems, Inc. | Encryption-based data access management |
US9317223B2 (en) | 2012-12-17 | 2016-04-19 | International Business Machines Corporation | Method and apparatus for automated migration of data among storage centers |
US9075529B2 (en) | 2013-01-04 | 2015-07-07 | International Business Machines Corporation | Cloud based data migration and replication |
US9589008B2 (en) | 2013-01-10 | 2017-03-07 | Pure Storage, Inc. | Deduplication of volume regions |
US20140201485A1 (en) | 2013-01-14 | 2014-07-17 | Commvault Systems, Inc. | Pst file archiving |
US9052917B2 (en) | 2013-01-14 | 2015-06-09 | Lenovo (Singapore) Pte. Ltd. | Data storage for remote environment |
US9483657B2 (en) | 2013-01-14 | 2016-11-01 | Accenture Global Services Limited | Secure online distributed data storage services |
US9009526B2 (en) | 2013-01-24 | 2015-04-14 | Hewlett-Packard Development Company, L.P. | Rebuilding drive data |
US20140229654A1 (en) | 2013-02-08 | 2014-08-14 | Seagate Technology Llc | Garbage Collection with Demotion of Valid Data to a Lower Memory Tier |
US20140230017A1 (en) | 2013-02-12 | 2014-08-14 | Appsense Limited | Programmable security token |
US9373960B2 (en) | 2013-03-13 | 2016-06-21 | Oracle International Corporation | Computerized system and method for distributed energy resource scheduling |
US8902532B2 (en) | 2013-03-20 | 2014-12-02 | International Business Machines Corporation | Write avoidance areas around bad blocks on a hard disk drive platter |
GB2513377A (en) | 2013-04-25 | 2014-10-29 | Ibm | Controlling data storage in an array of storage devices |
US20140351515A1 (en) | 2013-05-21 | 2014-11-27 | International Business Machines Corporation | Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation |
US9317382B2 (en) | 2013-05-21 | 2016-04-19 | International Business Machines Corporation | Storage device with error recovery indication |
US20140351505A1 (en) | 2013-05-21 | 2014-11-27 | International Business Machines Corporation | Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation |
WO2014200468A1 (en) | 2013-06-12 | 2014-12-18 | Thomson Licensing | Context based image search |
US10038726B2 (en) | 2013-06-12 | 2018-07-31 | Visa International Service Association | Data sensitivity based authentication and authorization |
US9124569B2 (en) | 2013-06-14 | 2015-09-01 | Microsoft Technology Licensing, Llc | User authentication in a cloud environment |
US8898346B1 (en) | 2013-06-20 | 2014-11-25 | Qlogic, Corporation | Method and system for configuring network devices |
US8984602B1 (en) | 2013-06-28 | 2015-03-17 | Emc Corporation | Protected resource access control utilizing credentials based on message authentication codes and hash chain values |
US20160041996A1 (en) | 2014-08-11 | 2016-02-11 | Netapp, Inc. | System and method for developing and implementing a migration plan for migrating a file system |
US9454423B2 (en) | 2013-09-11 | 2016-09-27 | Dell Products, Lp | SAN performance analysis tool |
DE112013007296T5 (de) | 2013-09-27 | 2016-04-21 | Intel Corporation | Bestimmung eines geeigneten Ziels für einen Initiator durch einen Prozessor auf Steuerungsebene |
US10002367B2 (en) | 2013-10-09 | 2018-06-19 | Selligent, Inc. | System and method for managing message campaign data |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
EP3065692B1 (en) * | 2013-11-06 | 2019-06-05 | Becton Dickinson and Company Limited | System with adapter for closed transfer of fluids |
US9519580B2 (en) | 2013-11-11 | 2016-12-13 | Globalfoundries Inc. | Load balancing logical units in an active/passive storage system |
US9619311B2 (en) | 2013-11-26 | 2017-04-11 | International Business Machines Corporation | Error identification and handling in storage area networks |
US9529546B2 (en) | 2014-01-08 | 2016-12-27 | Netapp, Inc. | Global in-line extent-based deduplication |
US10324897B2 (en) | 2014-01-27 | 2019-06-18 | Commvault Systems, Inc. | Techniques for serving archived electronic mail |
US9916356B2 (en) | 2014-03-31 | 2018-03-13 | Sandisk Technologies Llc | Methods and systems for insert optimization of tiered data structures |
JP6364899B2 (ja) * | 2014-04-08 | 2018-08-01 | セイコーエプソン株式会社 | プロジェクター、プロジェクターの制御方法、および、プログラム |
WO2015157862A1 (en) | 2014-04-14 | 2015-10-22 | Tremolant Inc. | Augmented reality communications |
US20150324690A1 (en) * | 2014-05-08 | 2015-11-12 | Microsoft Corporation | Deep Learning Training System |
US9361032B2 (en) | 2014-05-14 | 2016-06-07 | International Business Machines Corporation | Management of server cache storage space |
US9250823B1 (en) | 2014-05-20 | 2016-02-02 | Emc Corporation | Online replacement of physical storage in a virtual storage system |
EP2988221B1 (en) | 2014-06-27 | 2017-08-09 | Huawei Technologies Co., Ltd. | Controller, flash memory device and method for writing data into flash memory device |
US10318882B2 (en) * | 2014-09-11 | 2019-06-11 | Amazon Technologies, Inc. | Optimized training of linear machine learning models |
CA2953959C (en) * | 2014-06-30 | 2021-02-02 | Amazon Technologies, Inc. | Feature processing recipes for machine learning |
US10169715B2 (en) | 2014-06-30 | 2019-01-01 | Amazon Technologies, Inc. | Feature processing tradeoff management |
US9516167B2 (en) | 2014-07-24 | 2016-12-06 | Genesys Telecommunications Laboratories, Inc. | Media channel management apparatus for network communications sessions |
US10204010B2 (en) | 2014-10-03 | 2019-02-12 | Commvault Systems, Inc. | Intelligent protection of off-line mail data |
US20160071017A1 (en) | 2014-10-15 | 2016-03-10 | Brighterion, Inc. | Method of operating artificial intelligence machines to improve predictive model training and performance |
US9582463B2 (en) | 2014-12-09 | 2017-02-28 | Intel Corporation | Heterogeneous input/output (I/O) using remote direct memory access (RDMA) and active message |
US9952808B2 (en) * | 2015-03-26 | 2018-04-24 | International Business Machines Corporation | File system block-level tiering and co-allocation |
US9892005B2 (en) | 2015-05-21 | 2018-02-13 | Zerto Ltd. | System and method for object-based continuous data protection |
US9521200B1 (en) | 2015-05-26 | 2016-12-13 | Pure Storage, Inc. | Locally providing cloud storage array services |
US9716755B2 (en) | 2015-05-26 | 2017-07-25 | Pure Storage, Inc. | Providing cloud storage array services by a local storage array in a data center |
US10021170B2 (en) | 2015-05-29 | 2018-07-10 | Pure Storage, Inc. | Managing a storage array using client-side services |
US20160350009A1 (en) | 2015-05-29 | 2016-12-01 | Pure Storage, Inc. | Buffering data to be written to an array of non-volatile storage devices |
US9300660B1 (en) | 2015-05-29 | 2016-03-29 | Pure Storage, Inc. | Providing authorization and authentication in a cloud for a user of a storage array |
US9444822B1 (en) | 2015-05-29 | 2016-09-13 | Pure Storage, Inc. | Storage array access control from cloud-based user authorization and authentication |
US9919955B2 (en) * | 2015-07-24 | 2018-03-20 | Ofs Fitel, Llc | Optical fiber with low loss and nanoscale structurally homogeneous core |
US9817729B2 (en) | 2015-07-30 | 2017-11-14 | Zerto Ltd. | Method for restoring files from a continuous recovery system |
US9767320B2 (en) | 2015-08-07 | 2017-09-19 | Qualcomm Incorporated | Hardware enforced content protection for graphics processing units |
WO2017031126A1 (en) | 2015-08-17 | 2017-02-23 | Brocade Communications Systems, Inc. | Pci express connected network switch |
US9813302B2 (en) | 2015-08-28 | 2017-11-07 | Tigera, Inc. | Data center networks |
RU2632133C2 (ru) * | 2015-09-29 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Способ (варианты) и система (варианты) создания модели прогнозирования и определения точности модели прогнозирования |
US10795775B2 (en) | 2015-10-29 | 2020-10-06 | Datto, Inc. | Apparatuses, methods, and systems for storage and analysis of SaaS data and non-SaaS data for businesses and other organizations |
US10706368B2 (en) | 2015-12-30 | 2020-07-07 | Veritas Technologies Llc | Systems and methods for efficiently classifying data objects |
US10157442B1 (en) | 2016-01-18 | 2018-12-18 | OmniSci, Inc. | System and method for performing queries and displaying visual representations of their results using graphics processing units |
US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
US9507532B1 (en) | 2016-05-20 | 2016-11-29 | Pure Storage, Inc. | Migrating data in a storage array that includes a plurality of storage devices and a plurality of write buffer devices |
US11514304B2 (en) * | 2016-05-26 | 2022-11-29 | Samsung Sds America, Inc. | Continuously provisioning large-scale machine learning models |
US10134399B2 (en) * | 2016-07-15 | 2018-11-20 | Sonos, Inc. | Contextualization of voice inputs |
US10459657B2 (en) | 2016-09-16 | 2019-10-29 | Hewlett Packard Enterprise Development Lp | Storage system with read cache-on-write buffer |
US10776170B2 (en) | 2016-10-21 | 2020-09-15 | Fujitsu Limited | Software service execution apparatus, system, and method |
US10776322B2 (en) | 2016-12-13 | 2020-09-15 | EMC IP Holding Company LLC | Transformation processing for objects between storage systems |
US20180181877A1 (en) | 2016-12-23 | 2018-06-28 | Futurewei Technologies, Inc. | Generating a knowledge base to assist with the modeling of large datasets |
US10754872B2 (en) | 2016-12-28 | 2020-08-25 | Palantir Technologies Inc. | Automatically executing tasks and configuring access control lists in a data transformation system |
US11004010B2 (en) * | 2016-12-30 | 2021-05-11 | eSentire, Inc. | Processing real-time processing requests using machine learning models |
WO2018130267A1 (en) * | 2017-01-10 | 2018-07-19 | Huawei Technologies Co., Ltd. | Systems and methods for fault tolerance recover during training of a model of a classifier using a distributed system |
US10719760B2 (en) | 2017-04-09 | 2020-07-21 | Intel Corporation | Neural network scheduling mechanism |
US10186011B2 (en) | 2017-04-28 | 2019-01-22 | Intel Corporation | Programmable coarse grained and sparse matrix compute hardware with advanced scheduling |
CA3061725A1 (en) | 2017-04-28 | 2018-11-01 | Better Therapeutics Llc | Method and system for managing lifestyle and health interventions |
US11375300B2 (en) | 2017-06-10 | 2022-06-28 | International Business Machines Corporation | Networking hardware and software and data center topologies leveraging same |
US20180357017A1 (en) | 2017-06-12 | 2018-12-13 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
US10496335B2 (en) | 2017-06-30 | 2019-12-03 | Intel Corporation | Method and apparatus for performing multi-object transformations on a storage device |
US10176217B1 (en) | 2017-07-06 | 2019-01-08 | Palantir Technologies, Inc. | Dynamically performing data processing in a data pipeline system |
US10679129B2 (en) | 2017-09-28 | 2020-06-09 | D5Ai Llc | Stochastic categorical autoencoder network |
US20190102361A1 (en) * | 2017-09-29 | 2019-04-04 | Linkedin Corporation | Automatically detecting and managing anomalies in statistical models |
US10572292B2 (en) | 2017-10-03 | 2020-02-25 | Vmware, Inc. | Platform independent GPU profiles for more efficient utilization of GPU resources |
US10671435B1 (en) | 2017-10-19 | 2020-06-02 | Pure Storage, Inc. | Data transformation caching in an artificial intelligence infrastructure |
US10360214B2 (en) | 2017-10-19 | 2019-07-23 | Pure Storage, Inc. | Ensuring reproducibility in an artificial intelligence infrastructure |
US10891162B2 (en) | 2018-01-25 | 2021-01-12 | Vmware, Inc | Methods and apparatus to improve external resource allocation for hyper-converged infrastructures based on costs analysis |
-
2018
- 2018-07-26 US US16/045,814 patent/US10360214B2/en active Active
- 2018-07-31 CN CN201880059861.3A patent/CN111133409B/zh active Active
- 2018-07-31 WO PCT/US2018/044571 patent/WO2018218259A1/en active Application Filing
- 2018-08-02 EP EP23183450.8A patent/EP4242822A3/en active Pending
- 2018-08-02 EP EP18187162.5A patent/EP3376361B1/en active Active
- 2018-08-02 EP EP21152180.2A patent/EP3862864B1/en active Active
-
2019
- 2019-07-18 US US16/515,698 patent/US11403290B1/en active Active
-
2022
- 2022-04-26 US US17/660,735 patent/US20220253443A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743003B1 (en) * | 2007-05-16 | 2010-06-22 | Google Inc. | Scaling machine learning using approximate counting that uses feature hashing |
CN104813614A (zh) * | 2012-12-03 | 2015-07-29 | 惠普发展公司,有限责任合伙企业 | 用于iaas的管理的异步框架 |
WO2014145149A1 (en) * | 2013-03-15 | 2014-09-18 | Genesys Telecommunications Laboratories, Inc. | Intelligent automated agent for a contact center |
WO2017120579A1 (en) * | 2016-01-10 | 2017-07-13 | Presenso, Ltd. | System and method for validating unsupervised machine learning models |
CN105893583A (zh) * | 2016-04-01 | 2016-08-24 | 北京鼎泰智源科技有限公司 | 基于人工智能的数据采集方法及系统 |
Non-Patent Citations (1)
Title |
---|
蓝鲸分布式文件系统的分布式分层资源管理模型;黄华, 张建刚, 许鲁;计算机研究与发展(06);132-136 * |
Also Published As
Publication number | Publication date |
---|---|
US20190121889A1 (en) | 2019-04-25 |
EP4242822A3 (en) | 2023-10-25 |
US20220253443A1 (en) | 2022-08-11 |
EP4242822A2 (en) | 2023-09-13 |
EP3376361A2 (en) | 2018-09-19 |
CN111133409A (zh) | 2020-05-08 |
WO2018218259A1 (en) | 2018-11-29 |
EP3862864B1 (en) | 2023-07-12 |
EP3862864A1 (en) | 2021-08-11 |
EP3376361B1 (en) | 2021-02-24 |
US10360214B2 (en) | 2019-07-23 |
EP3376361A3 (en) | 2018-10-10 |
US11403290B1 (en) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111133409B (zh) | 确保人工智能基础设施中的再现性 | |
US11768636B2 (en) | Generating a transformed dataset for use by a machine learning model in an artificial intelligence infrastructure | |
US11307894B1 (en) | Executing a big data analytics pipeline using shared storage resources | |
US10936238B2 (en) | Hybrid data tiering | |
US11714728B2 (en) | Creating a highly available data analytics pipeline without replicas | |
US10846216B2 (en) | Scalable garbage collection | |
US20210240347A1 (en) | Policy based data tiering | |
US11455168B1 (en) | Batch building for deep learning training workloads | |
US10678433B1 (en) | Resource-preserving system upgrade | |
US10776046B1 (en) | Optimized non-uniform memory access | |
US11392553B1 (en) | Remote data management | |
WO2019209392A1 (en) | Hybrid data tiering | |
US10678436B1 (en) | Using a PID controller to opportunistically compress more data during garbage collection | |
US11397674B1 (en) | Optimizing garbage collection across heterogeneous flash devices | |
US11281577B1 (en) | Garbage collection tuning for low drive wear | |
US11809727B1 (en) | Predicting failures in a storage system that includes a plurality of storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |