extend ../_components/base.pug

block pagetitle
    | Machine Learning APIs  

block css 
    link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
    link(rel="stylesheet", href="../css/machinelearning.css?ver=" + config.version)

  



block main
    - global.pageHref = "features"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                .innerhero__pre.pb-3 Apache Ignite
                h1.h1.innerhero__h1 Machine Learning<br> APIs
                .innerhero__descr.pt-2.h5.
                    Continuously train, execute and update your machine learning<br> models at scale and in real-time
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--machine(src="/img/features/machinelearning/machine.svg", alt="Machine-hero")
    // /.innerhero

  

    section.machine1
      .container
         .machine1__block.flexi
              .machine1__info
                 h2.compute2__h2 Ignite Machine Learning APIs Overview
                 h3.machine1__title.machine-top What is it?
                 p.machine1__text Ignite Machine Learning (ML) is a set of simple, scalable, and efficient tools that allow building predictive machine learning models without costly data transfers.
                 h3.machine1__title.machine-top How does Apache Ignite support ML APIs?
                 p.machine1__text You have two options:
                 .machine1__options.flexi
                   .machine1__option
                     .machine1__number 01
                     .machine1__subtext Use built-in ML APIs for some of the typical ML and deep learning (DL) tasks, such as:
                     .machine1__subtext.flexi
                       span — Classification
                       span — Regression
                       span  — Clustering
                       span — Recommendation
                       span — Preprocessing
                   .machine1__option 
                     .machine1__number 02
                     .machine1__subtext Use external ML and DL libraries that use Apache Ignite as scalable and high-performance distributed data storage:
                     .machine1__subtext.flexi
                       span — TensorFlow
                       span — Scikit
                       span — Spark
                       span — And more
                      
                   
              img.machine1__image(src="/img/features/machinelearning/image.svg", alt="image") 
     

    section.compute2
     .container
       h2.compute2__h2 Benefits of Apache Ignite Machine Learning API
       .machineitem.machineitem1.flexi
          h3.machine__title Expedite the training process with horizontal cluster scalability
          .machine__info
            p.machine__text You can distribute your training data set over an unlimited number of cluster nodes and train your models with the speed of memory.<br> With built-in Ignite ML APIs, you:
            .machine__part.flexi
              .compute2-points__item.fz20
              .machine__subtext Avoid, or minimise ETL
            .machine__part.flexi
              .compute2-points__item.fz20
              .machine__subtext Load all your training data sets in the same cluster
            .machine__part.flexi
              .compute2-points__item.fz20
              .machine__subtext Minimise network utilization during the training process
       .machineitem.machineitem1.flexi
          h3.machine__title Execute your ML models with in-memory speed from your application code
          .machine__info
            p.machine__text Once the model is trained, deploy it on the cluster and execute it with in-memory speed. Use built-in Ignite APIs or 3rd party libraries.
       .machineitem.machineitem1.flexi
          h3.machine__title Continue updating your models with new data in real-time
          .machine__info
            p.machine__text Data and user behaviours change rapidly, so you always need to advance your models. With Apache Ignite, you can update your already deployed ML models with new data sets.

            
    // /.compute2

    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                h3.h4.nativebotblock__title
                    img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Start coding machine learning APIs
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/machine-learning/machine-learning", target="_blank") Performing Machine Learning
            article.nativebotblock.nativebotblock--learn
                h3.h4.nativebotblock__title
                    img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Check out how Apache Ignite updates<br> trained models in real time
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/machine-learning/updating-trained-models", target="_blank") Updating Trained Models




