Benchmarking and Accelerating Tensorflow-Based Deep Learning on Modern HPC Systems

Total Page:16

File Type:pdf, Size:1020Kb

Benchmarking and Accelerating Tensorflow-Based Deep Learning on Modern HPC Systems Benchmarking and Accelerating TensorFlow-based Deep Learning on Modern HPC Systems A Thesis Presented in Partial Fulfillment of the Requirements for the Degree Master of Science in the Graduate School of The Ohio State University By Rajarshi Biswas, Graduate Program in Department of Computer Science and Engineering The Ohio State University 2018 Master’s Examination Committee: Dr. Dhabaleswar K. (DK) Panda, Advisor Dr. Christopher Charles Stewart Dr. Xiaoyi Lu c Copyright by Rajarshi Biswas 2018 Abstract Google’s TensorFlow is one of the most popular Deep Learning (DL) frameworks avail- able in the community. gRPC, a Remote Procedure Call (RPC) framework also developed by Google, is the main communication engine for distributed TensorFlow. TensorFlow pri- marily uses gRPC for exchanging tensors and communicating administrative tasks among different processes across the nodes. Tensor updates during the training phase are commu- nication intensive and thus TensorFlow’s performance is heavily dependent on the under- lying network and the efficacy of the communication engine. Apart from the default gRPC channel, TensorFlow supports various high-performance channels to efficiently transfer tensors such as gRPC+Verbs and gRPC+MPI. However, at present, the community lacks a thorough characterization of these available distributed TensorFlow communication chan- nels. This is critical to understand because high-performance Deep Learning with Tensor- Flow on modern HPC systems needs an efficient communication runtime. In this work, we first conduct a meticulous analysis of the communication character- istics of distributed TensorFlow over all available channels. Based on these characteris- tics we propose TF-gRPC-Bench micro-benchmark suite that enables system researches to quickly understand the impact of the underlying network and communication runtime on DL workloads. We propose three micro-benchmarks that take account TensorFlow DL workload characteristics over gRPC. Furthermore, our characterization shows that none of the existing channels in TensorFlow can support adaptive and efficient communication for ii DL workloads with different message sizes. Moreover, the community needs to maintain these different channels while the users are also expected to tune these channels to get the desired performance. Therefore, this work proposes a unified approach to have a single gRPC runtime (i.e., AR-gRPC) in TensorFlow with Adaptive and efficient RDMA proto- cols. In AR-gRPC, we propose designs such as hybrid communication protocols, message pipelining and coalescing, zero-copy transmission etc. to make our runtime be adaptive to different message sizes for DL workloads. Our evaluations show that AR-gRPC can signif- icantly speedup gRPC performance by up to 4.1x and 2.3x compared to the default gRPC design on IPoIB and another RDMA-based gRPC design in the community. By integrating our AR-gRPC with TensorFlow, we can achieve up to 3x distributed training performance improvement over default gRPC-IPoIB based TensorFlow. iii To my family, friends, and mentors. iv Acknowledgments My deepest gratitude is to my advisor Dr. D. K. Panda for the guidance and support he has given me throughout the thesis work. I am grateful to him for giving me this important opportunity to be part of HiBD research group. His work-ethic, commitment, principles are big inspirations for me and I would always want to follow in this direction of right path. I also want to thank Dr. Christopher Charles Stewart for agreeing to be a committee member for my thesis defense exam, and make it work despite of his tight schedule and commitments. I would like to give special thanks to Dr. Xiaoyi Lu, who has been my mentor and team lead. His technical guidance and encouragement throughtout my tenure in the lab has been invaluable to me. His insightful and thought-provoking technical comments has helped me grow. His willingness to support me even in trying circumstances kept me moving forward. He brings a lot of positivity to the lab and his commitment to work is exceptional. I’ve learnt a lot working closely with him. From my family, I want to thank my mother Mrs. Minati Biswas and my father Mr. Ranajit Kumar Biswas for their continuous support and love. They have done a lot of sacrifices for me and I am grateful to have parents like them. I also want to thank my cousin sister Sampurna Biswas who has been a great support throughout my graduate studies in the US. v Finally, I thank my lab colleagues and friends Shashank, Haseeb, Moniba, Sourav, Haiyang, Dipti and others for the interactions we had. I would also like to thank all my friends back at home, particularly Arka and Chandan for encouraging me in my pursuit. vi Vita 2011 . B.E., Information Technology, Jadavpur University, India. 2011 - 2015 . Software Development Engineer, Citrix Research and Development, India 2015 - 2016 . Senior Software Development Engineer, Citrix Research and Development, India 2016 - Present . M.S., Computer Science and Engineer- ing, The Ohio State University, USA 2017 - Present . Graduate Research Associate, The Ohio State University, USA Publications X. Lu, H. Shi, R. Biswas, M. H. Javed, and D. K. Panda, DLoBD: A Comprehensive Study of Deep Learning over Big Data Stacks on HPC Clusters, In The Journal of IEEE Transactions on Multi-Scale Computing Systems, [June 2018]. R. Biswas, X. Lu, and D. K. Panda, Designing a MicroBenchmark Suite to Evaluate gRPC for TensorFlow: Early Experiences, In 9th Workshop on Big data benchmarks, Perfor- mance Optimization, and Emerging hardware (BPOE - 9), in conjunction with ASPLOS, [March 2018]. X. Lu, H. Shi, M. H. Javed, R. Biswas, and D. K. Panda, Characterizing Deep Learning over Big Data (DLoBD) Stacks on RDMA-Capable Networks, In 25th Annual Symposium on High-Performance Interconnects (HOTI ’17), [August 2017]. Fields of Study Major Field: Computer Science and Engineering vii Table of Contents Page Abstract . ii Dedication . iv Acknowledgments . .v Vita ........................................... vii List of Tables . .x List of Figures . xi 1. Introduction . .1 1.1 Motivation . .2 1.2 Organization of Thesis . .5 2. Background . .6 2.1 Overview of TensorFlow . .6 2.2 Overview of gRPC . .8 2.3 Overview of InfiniBand and RDMA . .9 3. Characterization of Distributed TensorFlow . 11 3.1 Distributed Execution of TensorFlow . 11 3.2 Methodology for Characterization . 12 3.3 Characterization for the gRPC Channel . 13 3.4 Characterization for the gRPC+Verbs Channel . 15 3.5 Characterization for the gRPC+MPI Channel . 15 3.6 Characteristics of TensorFlow Workload over gRPC Channel . 17 3.7 Summary . 18 viii 4. Designing a Micro-Benchmark Suite to Evaluate gRPC for TensorFlow . 21 4.1 Introduction . 21 4.2 TensorFlow Deep Learning Micro-benchmarks for gRPC . 22 4.2.1 Design Considerations . 22 4.2.2 Design of TF-gRPC-Bench Micro-benchmark Suite . 25 4.3 Performance Evaluation . 29 4.3.1 Experimental Setup . 29 4.3.2 TF-gRPC-P2P-Latency (Serialized Mode) . 31 4.3.3 TF-gRPC-P2P-Latency (Non-serialized Mode) . 32 4.3.4 TF-gRPC-P2P-Bandwidth (Non-serialized Mode) . 33 4.3.5 TF-gRPC-PS-Throughput (Non-serialized Mode) . 34 4.4 Related Work . 35 4.5 Summary . 36 5. Accelerating TensorFlow with Adaptive RDMA-based gRPC (AR-gRPC)... 38 5.1 Introduction . 38 5.2 Proposed Design of AR-gRPC . 39 5.2.1 Architecture Overview of AR-gRPC . 39 5.2.2 Adaptive RDMA-based Communication . 41 5.3 Performance Evaluation . 44 5.3.1 Experimental Setup . 45 5.3.2 Evaluation of gRPC . 45 5.3.3 Evaluation of AR-gRPC Enhanced TensorFlow . 52 5.4 Related Work . 59 5.5 Summary . 61 6. Conclusion and Future Work . 62 Bibliography . 63 ix List of Tables Table Page 1.1 Comparison with Related Work . .4 3.1 TensorFlow Performance for Resnet50 . 13 4.1 iovec Buffer Size Category . 28 4.2 Configurable Parameters for TF-gRPC-Bench Micro-benchmark Suite . 30 x List of Figures Figure Page 1.1 Contrast Between Current and Proposed Deep Learning Benchmarks . .3 2.1 Overview of TensorFlow . .7 2.2 Overview of gRPC Deployment . .9 3.1 Communication Pattern Between TensorFlow Parameter Servers and Workers 12 3.2 TensorFlow Payload Distribution and Communication Flow over gRPC channel . 14 3.3 TensorFlow Payload Distribution and Communication Flow over gRPC+Verbs channel . 16 3.4 TensorFlow Payload Distribution and Communication Flow over gRPC+MPI channel . 17 3.5 iovec Buffer Distribution Observed for TensorFlow training over gRPC . 18 4.1 Design Considerations for TF-gRPC-Bench Micro-benchmark . 23 4.2 TF-gRPC-Bench Micro-benchmark Deign . 26 4.3 TF-gRPC-P2P-Latency (Serialized Mode) Evaluation on Cluster A with 64KBytes Payload . 31 4.4 TF-gRPC-P2P-Latency (Non-serialized Mode) . 32 4.5 TF-gRPC-P2P-Latency (Non-serialized Mode) Evaluation on Cluster A for Different iovec Counts . 33 xi 4.6 TF-gRPC-P2P-Bandwidth (Non-serialized Mode) . 34 4.7 TF-gRPC-PS-Throughput (Non-serialized Mode) . 35 5.1 Overview of AR-gRPC and the Corresponding Communication in Tensor- Flow...................................... 40 5.2 gRPC Point-to-Point Latency Evaluation on Cluster A . 46 5.3 gRPC Point-to-Point Latency Evaluation on Cluster B . 47 5.4 Analysis of Various gRPC Designs on Cluster A . 49 5.5 gRPC Single Server, Multiple Clients Throughput Evaluation on Cluster A . 50 5.6 Performance Comparison in Fully-Connected Architecture of gRPC . 51 5.7 Inception4 Evaluation on Cluster A (Higher Better); TotalBatchSize = (BatchSize=GPU) × NUMo f GPUs ..................... 54 5.8 Resnet152 Evaluation on Cluster A (Higher Better); TotalBatchSize = (BatchSize=GPU) × NUMo f GPUs ..................... 55 5.9 Inception3 Evaluation on Cluster A (Higher Better); TotalBatchSize = (BatchSize=GPU) × NUMo f GPUs ..................... 56 5.10 Resnet50 Evaluation on Cluster A (Higher is Better); TotalBatchSize = (BatchSize=GPU) × NUMo f GPUs ....................
Recommended publications
  • Advanced Model Deployments with Tensorflow Serving Presentation.Pdf
    Most models don’t get deployed. Hi, I’m Hannes. An inefficient model deployment import json from flask import Flask from keras.models import load_model from utils import preprocess model = load_model('model.h5') app = Flask(__name__) @app.route('/classify', methods=['POST']) def classify(): review = request.form["review"] preprocessed_review = preprocess(review) prediction = model.predict_classes([preprocessed_review])[0] return json.dumps({"score": int(prediction)}) Simple Deployments @app.route('/classify', methods=['POST']) Why Flask is insufficient def classify(): review = request.form["review"] ● No consistent APIs ● No consistent payloads preprocessed_review = preprocess(review) ● No model versioning prediction = model.predict_classes( ● No mini-batching support [preprocessed_review])[0] ● Inefficient for large models return json.dumps({"score": int(prediction)}) Image: Martijn Baudoin, Unsplash TensorFlow Serving TensorFlow Serving Production ready Model Serving ● Part of the TensorFlow Extended Ecosystem ● Used internally at Google ● Highly scalable model serving solution ● Works well for large models up to 2GB TensorFlow 2.0 ready! * * With small exceptions Deploy your models in 90s ... Export your Model import tensorflow as tf TensorFlow 2.0 Export tf.saved_model.save( ● Consistent model export model, ● Using Protobuf format export_dir="/tmp/saved_model", ● Export of graphs and signatures=None estimators possible ) $ tree saved_models/ Export your Model saved_models/ └── 1555875926 ● Exported model as Protobuf ├── assets (Saved_model.pb)
    [Show full text]
  • An Evaluation of Tensorflow As a Programming Framework for HPC Applications
    DEGREE PROJECT IN COMPUTER SCIENCE AND ENGINEERING, SECOND CYCLE, 30 CREDITS STOCKHOLM, SWEDEN 2018 An Evaluation of TensorFlow as a Programming Framework for HPC Applications WEI DER CHIEN KTH ROYAL INSTITUTE OF TECHNOLOGY SCHOOL OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE An Evaluation of TensorFlow as a Programming Framework for HPC Applications WEI DER CHIEN Master in Computer Science Date: August 28, 2018 Supervisor: Stefano Markidis Examiner: Erwin Laure Swedish title: En undersökning av TensorFlow som ett utvecklingsramverk för högpresterande datorsystem School of Electrical Engineering and Computer Science iii Abstract In recent years, deep-learning, a branch of machine learning gained increasing popularity due to their extensive applications and perfor- mance. At the core of these application is dense matrix-matrix multipli- cation. Graphics Processing Units (GPUs) are commonly used in the training process due to their massively parallel computation capabili- ties. In addition, specialized low-precision accelerators have emerged to specifically address Tensor operations. Software frameworks, such as TensorFlow have also emerged to increase the expressiveness of neural network model development. In TensorFlow computation problems are expressed as Computation Graphs where nodes of a graph denote operation and edges denote data movement between operations. With increasing number of heterogeneous accelerators which might co-exist on the same cluster system, it became increasingly difficult for users to program efficient and scalable applications. TensorFlow provides a high level of abstraction and it is possible to place operations of a computation graph on a device easily through a high level API. In this work, the usability of TensorFlow as a programming framework for HPC application is reviewed.
    [Show full text]
  • From XML to Flat Buffers: Markup in the Twenty-Teens Warning! the Contenders
    Elliotte Rusty Harold [email protected] August 2018 From XML to Flat Buffers: Markup in the Twenty-teens Warning! The Contenders ● XML ● JSON ● YAML ● EXI ● Protobufs ● Flat Protobufs XML JSON YAML EXI Protobuf Flat Buffers App Engine X X Standard Java App Engine X Flex What Uses What Kubernetes X X From technology, tools, and systems Eclipse X I use frequently. There are many others. Maven X Ant X Google X X X X X “APIs” Publishing X XML XML ● Very well defined standard ● By far the most general format: ○ Mixed content ○ Attributes and elements ● By far the best tool support. Nothing else is close: ○ XSLT ○ XPath ○ Many schema languages: ■ W3C XSD ■ RELAX NG More Reasons to Choose XML ● Most composable for mixing and matching markup; e.g. MathML+SVG in HTML ● Does not require a schema. ● Streaming support: very large documents ● Better for interchange amongst unrelated parties ● The deeper your needs the more likely you’ll end up here. Why Not XML? ● Relatively complex for simple tasks ● Limited to no support for non-string programming types: ○ Numbers, booleans, dates, money, etc. ○ Lists, maps, sets ○ You can encode all these but APIs don’t necessarily recognize or support them. ● Lots of sharp edges to surprise the non-expert: ○ 9/10 are namespace related ○ Attribute value normalization ○ White space ● Some security issues if you’re not careful (Billion laughs) JSON ● Simple for object serialization and program data. If your data is a few basic types (int, string, boolean, float) and data structures (list, map) this works well. ● More or less standard (7-8 of them in fact) ● Consumption libraries for essentially all significant languages Why Not JSON? ● It is surprising how fast needs grow past a few basic types and data structures.
    [Show full text]
  • Trifacta Data Preparation for Amazon Redshift and S3 Must Be Deployed Into an Existing Virtual Private Cloud (VPC)
    Install Guide for Data Preparation for Amazon Redshift and S3 Version: 7.1 Doc Build Date: 05/26/2020 Copyright © Trifacta Inc. 2020 - All Rights Reserved. CONFIDENTIAL These materials (the “Documentation”) are the confidential and proprietary information of Trifacta Inc. and may not be reproduced, modified, or distributed without the prior written permission of Trifacta Inc. EXCEPT AS OTHERWISE PROVIDED IN AN EXPRESS WRITTEN AGREEMENT, TRIFACTA INC. PROVIDES THIS DOCUMENTATION AS-IS AND WITHOUT WARRANTY AND TRIFACTA INC. DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES TO THE EXTENT PERMITTED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE AND UNDER NO CIRCUMSTANCES WILL TRIFACTA INC. BE LIABLE FOR ANY AMOUNT GREATER THAN ONE HUNDRED DOLLARS ($100) BASED ON ANY USE OF THE DOCUMENTATION. For third-party license information, please select About Trifacta from the Help menu. 1. Quick Start . 4 1.1 Install from AWS Marketplace . 4 1.2 Upgrade for AWS Marketplace . 7 2. Configure . 8 2.1 Configure for AWS . 8 2.1.1 Configure for EC2 Role-Based Authentication . 14 2.1.2 Enable S3 Access . 16 2.1.2.1 Create Redshift Connections 28 3. Contact Support . 30 4. Legal 31 4.1 Third-Party License Information . 31 Page #3 Quick Start Install from AWS Marketplace Contents: Product Limitations Internet access Install Desktop Requirements Pre-requisites Install Steps - CloudFormation template SSH Access Troubleshooting SELinux Upgrade Documentation Related Topics This guide steps through the requirements and process for installing Trifacta® Data Preparation for Amazon Redshift and S3 through the AWS Marketplace.
    [Show full text]
  • Cloud Native Communication Patterns with Grpc
    Cloud Native Communication Patterns with gRPC Kasun Indrasiri Author “gRPC Up and Running” and “Microservices for Enterprise” About Me ● Author “gRPC Up & Running”, “Microservices for Enterprise” ● Product Manager/Senior Director at WSO2. ● Committer and PMC member at Apache Software Foundation. ● Founder “Bay area Microservices, APIs and Integration” meetup group. What is gRPC? ● Modern Inter-process communication technology. ● Invoking remote functions as easy as making a local function invocation. ● Contract-first. ● Binary messaging on the wire on top of HTTP2 ● Polyglot. Fundamentals of gRPC - Service Definition syntax = "proto3"; ● Defines the business capabilities of package ecommerce; your service. service ProductInfo { rpc addProduct(Product) returns (ProductID); ● Protocol Buffers used as the IDL for rpc getProduct(ProductID) returns (Product); define services. } message Product { ● Protocol Buffers : string id = 1; ○ A language-agnostic, platform-neutral, string name = 2; extensible mechanism to serializing string description = 3; float price = 4; structured data. } ● Defines service, remote methods, and message ProductID { data types. string value = 1; } ProductInfo.proto Fundamentals of gRPC - gRPC Service // AddProduct implements ecommerce.AddProduct ● gRPC service implements the func (s *server) AddProduct(ctx context.Context, in *pb.Product) (*pb.ProductID, business logic. error) { ● Generate server side skeleton from // Business logic } service definition. // GetProduct implements ecommerce.GetProduct func (s *server) GetProduct(ctx
    [Show full text]
  • Integrating R with the Go Programming Language Using Interprocess Communication
    Integrating R with the Go programming language using interprocess communication Christoph Best, Karl Millar, Google Inc. [email protected] Statistical software in practice & production ● Production environments !!!= R development environment ○ Scale: machines, people, tools, lines of code… ● “discipline of software engineering” ○ Maintainable code, common standards and processes ○ Central problem: The programming language to use ● How do you integrate statistical software in production? ○ Rewrite everything in your canonical language? ○ Patch things together with scripts, dedicated servers, ... ? Everybody should just write Java! Programming language diversity ● Programming language diversity is hard … ○ Friction, maintenance, tooling, bugs, … ● … but sometimes you need to have it ○ Many statistics problems can “only” be solved in R* ● How do you integrate R code with production code? ○ without breaking production *though my colleagues keep pointing out that any Turing-complete language can solve any problem The Go programming language ● Open-source language, developed by small team at Google ● Aims to put the fun back in (systems) programming ● Fast compilation and development cycle, little “baggage” ● Made to feel like C (before C++) ● Made not to feel like Java or C++ (enterprise languages) ● Growing user base (inside and outside Google) Integration: Intra-process vs inter-process ● Intra-process: Link different languages through C ABI ○ smallest common denominator ○ issues: stability, ABI evolution, memory management, threads, … Can we do better? Or at least differently? ● Idea: Sick of crashes? Execute R in a separate process ○ Runs alongside main process, closely integrated: “lamprey” ● Provide communication layer between R and host process ○ A well-defined compact interface surface Integration: Intra-process vs inter-process C runtime Go R RPC client C++ runtime IPC Messages Java (library) Python RPC server ..
    [Show full text]
  • SESSION 2 YANG, Openconfig, and Gnmi
    SESSION 2 YANG, OpenConfig, and gNMI Copyright © 2019 - Open Networking Foundation Session 2 Overview 1. YANG: Configuration Modeling Language 2. OpenConfig: Configuration and telemetry model instances 3. gNMI: Runtime Configuration and Monitoring Interface 4. gNOI: Runtime Operations Interface Copyright © 2019 - Open Networking Foundation YANG Overview YANG is a data modeling language for network configuration ● Used to express the structure of data, NOT the data itself ● Instances of data can be expressed in XML, JSON, Protobuf, etc. and are considered valid if they adhere to the YANG data model (schema) From a YANG model, we care about 2 things: 1. Data tree organization (from which we get the paths and leaf data types) 2. Semantics of the leaf nodes (from the description field, usually in English) History: YANG was originally designed as a data modeling language for NETCONF. It borrows the syntactic structure and base types from SMIng, which is an evolution of SMI, the data modeling language for SNMP used for MIBs. Copyright © 2019 - Open Networking Foundation YANG Module A module is a self-contained tree of nodes. Modules are the smallest unit that can be “compiled” by YANG tools. // A module is a self-contained tree of nodes module demo-port { A module contains: // YANG Boilerplate ● boilerplate, like a namespace, yang-version "1"; prefix for reference in other namespace "https://opennetworking.org/yang/demo"; modules, description, version / prefix "demo-port"; description "Demo model for managing ports"; revision history, etc. revision "2019-09-10" { ● identities and derived types description "Initial version"; ● modular groupings reference "1.0.0"; } ● a top-level container that defines tree of data nodes // ..
    [Show full text]
  • Almond Variety Detection Using Deep Learning
    Almond Variety Detection using Deep Learning Benarous Ahmed Omar Farouq - a41369 Thesis presented to the School of Technology and Management in the scope of the Master in Information Systems. Supervisors: Prof. Maria João Tinoco Varanda Pereirar This document does not include the suggestions made by the board. Bragança 2019-2020 Dedication I dedicate my dissertation work to my family. A special feeling of gratitude to my loving parents, whose words of encouragement and push for tenacity ring in my ears. I also dedicate this dissertation to my many friends who have supported me throughout the process. I will always appreciate all they have done. v Acknowledgment In the name of Allah, the Most Gracious, the Most Merciful I would like to express my deep sense of gratitude, respect and heartfelt thanks to Prof. Maria João Tinoco Varanda Pereira, for her great contribu- tions, encouragement and support during the thesis writing, understanding and patience that have accompanied me during the research time. I would like to acknowledge and thank to ESTIG-IPB school division for providing me of the necessary materials needed to conduct my research and providing any assistance requested. I would like to acknowledge and thank to ESA-IPB school division for allow- ing me to conduct my research and providing any assistance requested. Special thanks goes to the members of the lab Professors Nuno Rodrigues and José Alberto Pereira for their continued support. Finally I would like to thank all professor of the hassiba benbouali university where i have started my journey of studying computer science. And special thank and acknowledgment to all community of computer science, this dynamic and healthy community is the reason why computer science, which is very new vi field compared to other sciences, has evolved so dramatically fast and now have huge impact on almost everything.
    [Show full text]
  • Developing the Guidelines for Migration from Restful Microservices to Grpc
    Masaryk University Faculty of Informatics Developing the guidelines for migration from RESTful microservices to gRPC Master’s Thesis Michal Štefanič Brno, Spring 2021 Masaryk University Faculty of Informatics Developing the guidelines for migration from RESTful microservices to gRPC Master’s Thesis Michal Štefanič Brno, Spring 2021 This is where a copy of the official signed thesis assignment and a copy ofthe Statement of an Author is located in the printed version of the document. Declaration Hereby I declare that this paper is my original authorial work, which I have worked out on my own. All sources, references, and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source. Michal Štefanič Advisor: RNDr. Josef Spurný i Acknowledgements I would like to thank my advisors, RNDr. Josef Spurný for his time and valuable consultations, and doc. Mouzhi Ge, Ph.D. who left the university, but still found a time for thesis consultations. I would also like to thank the colleagues from Kiwi.com, especially Matouš Dziviak with whom I consulted a lot of technical questions related to the thesis. And Tomáš Gerich for proofreading the thesis. ii Abstract With the rising popularity of microservice architecture, Google de- cided to revive the "Remote procedure call" (RPC) concept to facili- tate effective communication between single services and developed their own framework (gRPC) for RPC service communication. gRPC became quickly popular and many famous companies as Netflix, Mi- crosoft, Slack integrated it into their systems. However, there is not a clear, step-by-step guide on when and how to migrate your services to gRPC architecture.
    [Show full text]
  • Code Smell Prediction Employing Machine Learning Meets Emerging Java Language Constructs"
    Appendix to the paper "Code smell prediction employing machine learning meets emerging Java language constructs" Hanna Grodzicka, Michał Kawa, Zofia Łakomiak, Arkadiusz Ziobrowski, Lech Madeyski (B) The Appendix includes two tables containing the dataset used in the paper "Code smell prediction employing machine learning meets emerging Java lan- guage constructs". The first table contains information about 792 projects selected for R package reproducer [Madeyski and Kitchenham(2019)]. Projects were the base dataset for cre- ating the dataset used in the study (Table I). The second table contains information about 281 projects filtered by Java version from build tool Maven (Table II) which were directly used in the paper. TABLE I: Base projects used to create the new dataset # Orgasation Project name GitHub link Commit hash Build tool Java version 1 adobe aem-core-wcm- www.github.com/adobe/ 1d1f1d70844c9e07cd694f028e87f85d926aba94 other or lack of unknown components aem-core-wcm-components 2 adobe S3Mock www.github.com/adobe/ 5aa299c2b6d0f0fd00f8d03fda560502270afb82 MAVEN 8 S3Mock 3 alexa alexa-skills- www.github.com/alexa/ bf1e9ccc50d1f3f8408f887f70197ee288fd4bd9 MAVEN 8 kit-sdk-for- alexa-skills-kit-sdk- java for-java 4 alibaba ARouter www.github.com/alibaba/ 93b328569bbdbf75e4aa87f0ecf48c69600591b2 GRADLE unknown ARouter 5 alibaba atlas www.github.com/alibaba/ e8c7b3f1ff14b2a1df64321c6992b796cae7d732 GRADLE unknown atlas 6 alibaba canal www.github.com/alibaba/ 08167c95c767fd3c9879584c0230820a8476a7a7 MAVEN 7 canal 7 alibaba cobar www.github.com/alibaba/
    [Show full text]
  • Angularjs Controller Request Parameters
    Angularjs Controller Request Parameters Clyde daunts her Urtext interdentally, adjuvant and rhizomorphous. Prepared Nikki sometimes reappear his expiations touchingly and repaginate so atomistically! Midship and bubbly Barde flats irreverently and disestablish his gasifier provisorily and banefully. Topic names and descriptions for each course. Rather Provide The Parameters At Resolution Time, will execute the post on the network. URL and the route. Here, we now have a simple, How would you get Google Alerts information into a database other than to parse the text of the email message that Google sends you? If we want to add multiple parameters, instead of reloading the entire page. No more posts to show. However, We Will Export These Data In Excel Sheet. Get practical advice to start your career in programming! Because this data is known, and the function body. Everytime a property of the controller changes, you will add reference links to the various available routes in your application. It has a name field which is initially null. We have another great solution. We can get HTTP status code of the response. Well, where we have the big advantage of providing deep links to our app through the URL. This second JS file will provide the services functionality of calling the RESTFul service. Find this content useful? In this example I have used simple test code where you would normally put your service logic to load items from the server or resolve other required data for your controller. Swallow errors for now. Consider the code snippet below. PATCH, this is not a good practice since Data Access gets complex as the application grows.
    [Show full text]
  • Faasten Your Decisions: Classification Framework And
    FaaSten Your Decisions: Classification Framework and Technology Review of Function-as-a-Service Platforms Vladimir Yussupova, Jacopo Soldanib, Uwe Breitenb¨uchera, Antonio Brogib, Frank Leymanna aInstitute of Architecture of Application Systems, University of Stuttgart, Germany bDepartment of Computer Science, University of Pisa, Italy Abstract Function-as-a-Service (FaaS) is a cloud service model enabling developers to offload event-driven executable snippets of code. The execution and management of such functions becomes a FaaS provider's responsibility, hereby included their on-demand provisioning and automatic scaling. Key enablers for this cloud service model are FaaS platforms, e.g., AWS Lambda, Microsoft Azure Functions or OpenFaaS. At the same time, the choice of the most appropriate FaaS platform for deploying and running a serverless application is not trivial, as various organizational and technical aspects have to be taken into account. In this work, we present (i) a FaaS platform classification framework derived using a mixed method study and (ii) a systematic technology review of the ten most prominent FaaS platforms, based on the proposed classification framework. Moreover, we present (iii) a FaaS platform selection support system, called FaaStener, which helps researchers and practitioners to choose the FaaS platform most suited for their requirements. Keywords: Serverless, Function-as-a-Service, FaaS, Platform, Classification Framework, Technology Review 1. Introduction The FaaS service model started gaining a lot of atten- tion after the release of AWS Lambda [4] in 2015, which In the context of cloud computing, the term server- started the overall serverless trend. Afterwards, all major less is typically used to describe a paradigm focusing on cloud providers introduced their FaaS offerings including cloud architectures that comprise provider-managed com- notable examples such as Microsoft Azure Functions [5], ponents [1].
    [Show full text]