{"id":835,"date":"2026-04-16T08:24:32","date_gmt":"2026-04-16T08:24:32","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-data-science-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-analytics-and-ai\/"},"modified":"2026-04-16T08:24:32","modified_gmt":"2026-04-16T08:24:32","slug":"oracle-cloud-data-science-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-analytics-and-ai","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-data-science-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-analytics-and-ai\/","title":{"rendered":"Oracle Cloud Data Science Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Analytics and AI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Analytics and AI<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Oracle Cloud <strong>Data Science<\/strong> (often referred to in documentation as <strong>OCI Data Science<\/strong>) is a managed service for building, training, evaluating, deploying, and operating machine learning (ML) models on <strong>Oracle Cloud Infrastructure (OCI)<\/strong>. It provides cloud-native workflows\u2014projects, notebook sessions, jobs, models, and model deployments\u2014so teams can move from experimentation to production without assembling every component from scratch.<\/p>\n\n\n\n<p>In simple terms: <strong>Data Science<\/strong> gives you a managed Jupyter-based environment to explore data and train models, and a managed deployment mechanism to expose trained models as scalable endpoints\u2014while integrating with core OCI services such as <strong>Object Storage<\/strong>, <strong>IAM<\/strong>, <strong>Vault<\/strong>, <strong>Logging<\/strong>, and <strong>Monitoring<\/strong>.<\/p>\n\n\n\n<p>Technically, Data Science is an OCI control-plane service that orchestrates ML workloads on OCI compute shapes (CPU\/GPU). It tracks ML assets (notebooks, jobs, models), supports reproducible environments (Conda environments and curated runtimes), and provides managed online inference through <strong>model deployments<\/strong>. You typically store datasets and model artifacts in <strong>OCI Object Storage<\/strong> and secure everything through <strong>OCI IAM policies<\/strong> and network controls (VCNs, subnets, security lists\/NSGs).<\/p>\n\n\n\n<p><strong>What problem it solves:<\/strong> teams often struggle with \u201clast-mile ML\u201d problems\u2014consistent environments, repeatable training runs, artifact management, secure deployments, and operational monitoring. Data Science reduces that friction by standardizing these workflows on Oracle Cloud while keeping integration points (Object Storage, VCN, IAM) explicit and governable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Data Science?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose<\/h3>\n\n\n\n<p>Oracle Cloud <strong>Data Science<\/strong> is designed to help you <strong>build, train, deploy, and manage machine learning models<\/strong> using managed notebook-based development, managed\/batch execution (jobs), and managed model deployments for online inference\u2014integrated with OCI\u2019s identity, networking, observability, and storage foundations.<\/p>\n\n\n\n<blockquote>\n<p>Service naming note: The current service is commonly labeled <strong>OCI Data Science<\/strong> in Oracle documentation. In this tutorial, \u201cData Science\u201d refers specifically to <strong>Oracle Cloud Infrastructure Data Science<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (what you can do)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create <strong>Projects<\/strong> to organize ML assets (notebooks, jobs, models)<\/li>\n<li>Use managed <strong>Notebook Sessions<\/strong> (JupyterLab) for exploration and training<\/li>\n<li>Run repeatable <strong>Jobs<\/strong> for batch training\/inference and scheduled runs<\/li>\n<li>Register trained models in a <strong>Model Catalog<\/strong><\/li>\n<li>Create <strong>Model Deployments<\/strong> (managed HTTPS endpoints) for online inference<\/li>\n<li>Use curated <strong>Conda environments<\/strong> and Oracle\u2019s ML tooling (for example, the OCI Accelerated Data Science library\u2014often referenced as <strong>ADS<\/strong> in Oracle materials)<\/li>\n<li>Integrate with OCI services: Object Storage, IAM, VCN, Logging, Monitoring, Vault, Container Registry (where applicable)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Project<\/strong>: logical container for organizing Data Science resources<\/li>\n<li><strong>Notebook Session<\/strong>: managed Jupyter environment running on a chosen compute shape<\/li>\n<li><strong>Job<\/strong>: a managed run of code (often training or batch scoring), typically more reproducible than ad-hoc notebook execution<\/li>\n<li><strong>Model<\/strong>: a registered ML artifact with metadata; typically stored in Object Storage<\/li>\n<li><strong>Model Deployment<\/strong>: managed online inference endpoint backed by configurable compute<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Managed ML platform service (control plane) orchestrating compute for notebooks, jobs, and deployments.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope: regional and compartment-based<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Science resources are typically <strong>regional<\/strong> and created within an OCI <strong>compartment<\/strong>.<\/li>\n<li>Access is governed by <strong>OCI IAM<\/strong> (users, groups, policies) and often by <strong>resource principals<\/strong> (workload identities) for notebooks\/jobs\/deployments.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Oracle Cloud ecosystem<\/h3>\n\n\n\n<p>Data Science sits in the <strong>Analytics and AI<\/strong> category and connects naturally to:\n&#8211; <strong>OCI Object Storage<\/strong> for datasets and model artifacts\n&#8211; <strong>OCI Data Flow<\/strong> \/ big data services for large-scale processing (when needed)\n&#8211; <strong>Autonomous Database<\/strong> \/ OCI databases as data sources\n&#8211; <strong>VCN<\/strong> and private networking for secure access to data sources\n&#8211; <strong>OCI Logging\/Monitoring<\/strong> for operational visibility\n&#8211; <strong>OCI Vault<\/strong> for managing secrets\/keys used by applications and pipelines<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Data Science?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Faster path from proof-of-concept to production with standardized ML workflows<\/li>\n<li>Reduced platform engineering effort compared to building your own notebooks + model serving + IAM + monitoring stack<\/li>\n<li>Better governance: projects, compartments, policies, tagging, and auditable operations<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Managed notebooks and deployments on OCI compute (CPU\/GPU) using consistent environments<\/li>\n<li>Model registration and lifecycle management via a model catalog<\/li>\n<li>Integration with OCI-native networking and identity (private endpoints, resource principals)<\/li>\n<li>Supports common Python ML stacks and reproducible environments<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Clear separation of dev (notebooks), batch (jobs), and prod (deployments)<\/li>\n<li>Use OCI monitoring\/logging patterns to run ML endpoints like any other production service<\/li>\n<li>Easier cleanup and cost control: stop sessions, delete deployments, remove artifacts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Central IAM policy enforcement (least privilege at compartment level)<\/li>\n<li>Private networking options using VCN\/subnets (avoid public exposure)<\/li>\n<li>Encryption at rest and in transit via OCI services (verify specifics per resource in official docs)<\/li>\n<li>Auditing through OCI Audit logs for API actions<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose shapes appropriate to workload (small CPU for dev, GPU for training, scalable deployments for inference)<\/li>\n<li>Managed model deployments can be sized and scaled based on endpoint needs (verify current scaling options in official docs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose Data Science<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You want a managed ML workflow tied to OCI primitives (VCN\/IAM\/Object Storage)<\/li>\n<li>You need secure, controlled access to data sources inside OCI<\/li>\n<li>You want managed online model inference without running Kubernetes\/model servers yourself<\/li>\n<li>You want consistent ML environments and repeatable runs for teams<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose Data Science<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You require a fully open, cloud-agnostic ML platform with minimal coupling to a specific cloud\u2019s IAM\/networking model<\/li>\n<li>Your organization already standardized on another ML platform (for example, SageMaker\/Vertex AI\/Azure ML) and migration cost outweighs benefits<\/li>\n<li>You need highly specialized custom serving stacks that the managed deployment patterns don\u2019t support (confirm current deployment customization options in official docs)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Data Science used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Financial services (risk scoring, fraud detection, credit models)<\/li>\n<li>Retail\/e-commerce (recommendations, demand forecasting, pricing models)<\/li>\n<li>Healthcare\/life sciences (readmission risk, triage support, operational analytics)<\/li>\n<li>Manufacturing (predictive maintenance, quality inspection, anomaly detection)<\/li>\n<li>Telecommunications (churn prediction, network anomaly detection)<\/li>\n<li>Energy\/utilities (load forecasting, outage prediction)<\/li>\n<li>Public sector (resource optimization, fraud\/waste detection)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data scientists and ML engineers<\/li>\n<li>Cloud engineers and platform teams supporting ML workloads<\/li>\n<li>DevOps\/SRE teams operating inference endpoints<\/li>\n<li>Security teams implementing IAM\/network controls for analytics\/AI workloads<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exploratory analysis and feature engineering in notebooks<\/li>\n<li>Batch training runs and evaluation with jobs<\/li>\n<li>Batch inference (scoring) for periodic pipelines<\/li>\n<li>Real-time inference via model deployments<\/li>\n<li>Model registry\/catalog for governance and reuse<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201cLake-first\u201d: Object Storage data lake \u2192 notebooks\/jobs \u2192 model catalog \u2192 deployment<\/li>\n<li>\u201cDatabase-first\u201d: Autonomous Database \u2192 notebooks\/jobs \u2192 model deployment close to private network<\/li>\n<li>Event-driven: object upload triggers pipeline (often via OCI Events\/Functions\u2014verify exact integration patterns in official docs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Private enterprise networks with VCN peering, private endpoints, and strict IAM<\/li>\n<li>Multi-compartment environments (dev\/test\/prod segregation)<\/li>\n<li>CI\/CD for ML artifacts where models and deployments are versioned and promoted<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dev\/test:<\/strong> small notebook sessions, minimal shapes, experimental projects<\/li>\n<li><strong>Production:<\/strong> jobs with reproducible environments, model catalog governance, controlled deployments, monitoring\/alerts, private endpoints, rigorous IAM<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Oracle Cloud Data Science is a good fit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Customer churn prediction<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> identify customers likely to churn to target retention offers.<\/li>\n<li><strong>Why Data Science fits:<\/strong> notebooks for exploration, jobs for scheduled retraining, deployments for real-time scoring in apps.<\/li>\n<li><strong>Example:<\/strong> telecom customer profile + usage data stored in Object Storage; churn model deployed as an HTTPS endpoint consumed by CRM.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Fraud detection scoring service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> score transactions for fraud risk with low latency.<\/li>\n<li><strong>Why Data Science fits:<\/strong> managed model deployments with controlled networking and IAM.<\/li>\n<li><strong>Example:<\/strong> a payment service calls the deployment endpoint; only private VCN access is allowed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Demand forecasting for supply chain<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> forecast demand to reduce stockouts and overstock.<\/li>\n<li><strong>Why Data Science fits:<\/strong> jobs for periodic training\/inference and artifact tracking.<\/li>\n<li><strong>Example:<\/strong> nightly job trains a forecasting model and writes forecasts back to Object Storage or a database.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Predictive maintenance (IoT)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> predict equipment failure from sensor data.<\/li>\n<li><strong>Why Data Science fits:<\/strong> notebooks for feature engineering; jobs for batch scoring; deployments for near-real-time inference.<\/li>\n<li><strong>Example:<\/strong> an ingestion pipeline stores sensor windows in Object Storage; a job scores anomalies and alerts operations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Document classification (lightweight)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> classify documents into business categories.<\/li>\n<li><strong>Why Data Science fits:<\/strong> train classical ML or smaller NLP models; deploy for inference.<\/li>\n<li><strong>Example:<\/strong> new documents uploaded to Object Storage are batch-classified nightly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Credit risk scoring<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> predict default risk for loan applicants.<\/li>\n<li><strong>Why Data Science fits:<\/strong> strong governance needs (IAM, compartments) and reproducibility.<\/li>\n<li><strong>Example:<\/strong> underwriting system calls a private model deployment endpoint.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Recommendation model prototype to production<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> convert a notebook-based prototype into a reliable service.<\/li>\n<li><strong>Why Data Science fits:<\/strong> model catalog + deployment workflow encourages operationalization.<\/li>\n<li><strong>Example:<\/strong> data scientist prototypes in notebook; ML engineer packages model artifact and deploys to production endpoint.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Retail price optimization experiment<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> evaluate price elasticity and optimize pricing.<\/li>\n<li><strong>Why Data Science fits:<\/strong> quick notebook iteration; jobs for large evaluations.<\/li>\n<li><strong>Example:<\/strong> train models on historical sales data and run batch simulations as jobs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Anomaly detection for logs\/metrics<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> detect unusual patterns in operational telemetry.<\/li>\n<li><strong>Why Data Science fits:<\/strong> batch training on historical data; deployment used by an internal tool.<\/li>\n<li><strong>Example:<\/strong> nightly job updates anomaly thresholds; endpoint used by ops dashboards.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Compliance and audit-friendly model registry<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> enforce traceability of model versions and metadata.<\/li>\n<li><strong>Why Data Science fits:<\/strong> model catalog plus OCI governance patterns (tags, compartments, audit logs).<\/li>\n<li><strong>Example:<\/strong> register each model with versioning metadata and link to training job output stored in Object Storage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Computer vision experimentation (GPU-based)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> train vision models that need GPUs.<\/li>\n<li><strong>Why Data Science fits:<\/strong> choose GPU shapes for notebooks\/jobs; later deploy a smaller model for inference.<\/li>\n<li><strong>Example:<\/strong> train on labeled images in Object Storage; deploy an inference endpoint for internal QA.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Feature engineering sandbox with secure data access<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> analysts need to experiment without exporting sensitive data.<\/li>\n<li><strong>Why Data Science fits:<\/strong> notebooks inside private subnets with restricted egress; IAM controls.<\/li>\n<li><strong>Example:<\/strong> notebook session runs in a private subnet and reads data from private DB endpoints.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Feature availability can vary by region and over time. For the most current details, verify in the official OCI Data Science documentation: https:\/\/docs.oracle.com\/en-us\/iaas\/data-science\/using\/<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Projects<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> organizes related Data Science resources (notebooks, jobs, models).<\/li>\n<li><strong>Why it matters:<\/strong> reduces sprawl and supports team-based governance.<\/li>\n<li><strong>Practical benefit:<\/strong> consistent compartment\/tagging and clearer lifecycle management.<\/li>\n<li><strong>Caveats:<\/strong> projects don\u2019t replace compartments; use compartments for environment isolation (dev\/test\/prod).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Notebook Sessions (managed JupyterLab)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> provides a managed development environment for Python-based ML.<\/li>\n<li><strong>Why it matters:<\/strong> accelerates experimentation while keeping compute selection and network placement explicit.<\/li>\n<li><strong>Practical benefit:<\/strong> quick start with curated environments; easy stop\/start.<\/li>\n<li><strong>Caveats:<\/strong> notebook sessions incur compute\/storage costs while running; ensure you stop them when idle.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Jobs (managed batch runs)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> executes code in a managed, repeatable way (training or batch inference).<\/li>\n<li><strong>Why it matters:<\/strong> notebooks are not ideal for repeatable production runs; jobs help standardize execution.<\/li>\n<li><strong>Practical benefit:<\/strong> consistent environment, better automation patterns, and clearer auditability.<\/li>\n<li><strong>Caveats:<\/strong> job setup requires packaging code and dependencies; plan artifact storage and logging upfront.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Model Catalog (model registration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> registers model artifacts and metadata, usually backed by Object Storage.<\/li>\n<li><strong>Why it matters:<\/strong> enables versioning, discovery, governance, and consistent deployment inputs.<\/li>\n<li><strong>Practical benefit:<\/strong> easier promotion of a known model version to staging\/production.<\/li>\n<li><strong>Caveats:<\/strong> you must manage artifact structure and metadata discipline; the catalog doesn\u2019t automatically ensure model quality.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Model Deployments (managed online inference)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> hosts a model as an HTTPS endpoint for real-time predictions.<\/li>\n<li><strong>Why it matters:<\/strong> removes the need to manage your own model-serving infrastructure for many standard use cases.<\/li>\n<li><strong>Practical benefit:<\/strong> consistent deployment workflow, IAM\/network controls, and operational visibility.<\/li>\n<li><strong>Caveats:<\/strong> ensure your model artifact includes correct scoring\/inference code; deployment failures are often packaging-related.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Curated environments (Conda)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> provides prebuilt Conda environments commonly used in ML.<\/li>\n<li><strong>Why it matters:<\/strong> reduces dependency conflicts and improves reproducibility.<\/li>\n<li><strong>Practical benefit:<\/strong> faster onboarding and fewer \u201cworks on my laptop\u201d issues.<\/li>\n<li><strong>Caveats:<\/strong> if you need niche libraries, you may need a custom environment; keep security patching in mind.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">OCI Accelerated Data Science (ADS) tooling (where available)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Oracle-provided Python tooling to support Data Science workflows (packaging, connectors, common ML tasks).<\/li>\n<li><strong>Why it matters:<\/strong> encourages consistent patterns for moving from notebook \u2192 model \u2192 deployment.<\/li>\n<li><strong>Practical benefit:<\/strong> speeds up artifact creation and metadata handling.<\/li>\n<li><strong>Caveats:<\/strong> verify current ADS capabilities and supported patterns in official docs and repos; don\u2019t assume parity with MLflow\/SageMaker tooling.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and Access Management (IAM) integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> controls who can create\/manage Data Science resources and what notebook\/jobs can access.<\/li>\n<li><strong>Why it matters:<\/strong> ML systems often touch sensitive data; least-privilege is essential.<\/li>\n<li><strong>Practical benefit:<\/strong> compartment scoping + policies provide strong governance.<\/li>\n<li><strong>Caveats:<\/strong> misconfigured policies are a common source of \u201cpermission denied\u201d errors.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking integration (VCN\/subnets, private endpoints)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> allows placing notebooks and deployments in specific network contexts.<\/li>\n<li><strong>Why it matters:<\/strong> many data sources are private (databases, internal APIs).<\/li>\n<li><strong>Practical benefit:<\/strong> private inference endpoints and controlled egress reduce exposure.<\/li>\n<li><strong>Caveats:<\/strong> incorrect route tables\/NSGs can block package installs, Object Storage access, or endpoint invocation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Observability integration (Logging\/Monitoring)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> integrates workloads with OCI monitoring\/logging patterns.<\/li>\n<li><strong>Why it matters:<\/strong> production inference needs SLOs, alerts, and traceability.<\/li>\n<li><strong>Practical benefit:<\/strong> align ML endpoints with standard ops practices.<\/li>\n<li><strong>Caveats:<\/strong> ensure you design log retention and protect sensitive data in logs.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>At a high level:\n&#8211; You create a <strong>Project<\/strong> in a compartment.\n&#8211; You start a <strong>Notebook Session<\/strong> on an OCI compute shape to explore data and train models.\n&#8211; You store datasets and artifacts in <strong>Object Storage<\/strong> (commonly).\n&#8211; You register a model in the <strong>Model Catalog<\/strong>.\n&#8211; You create a <strong>Model Deployment<\/strong> to serve predictions via HTTPS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane:<\/strong> OCI API\/Console calls create and manage resources (projects, sessions, jobs, models, deployments).<\/li>\n<li><strong>Data plane (training):<\/strong> notebook or job reads data (Object Storage, DBs), trains model, writes artifacts (Object Storage).<\/li>\n<li><strong>Data plane (inference):<\/strong> clients call deployment endpoint \u2192 service loads model artifact \u2192 returns prediction response.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related OCI services<\/h3>\n\n\n\n<p>Common integrations:\n&#8211; <strong>Object Storage<\/strong>: datasets, model artifacts, logs\/outputs\n&#8211; <strong>VCN\/Subnets\/NSGs<\/strong>: private network placement and access control\n&#8211; <strong>IAM<\/strong>: users\/groups\/policies, dynamic groups, resource principals\n&#8211; <strong>Vault<\/strong>: storing secrets (API keys, DB passwords) when needed\n&#8211; <strong>Logging\/Monitoring<\/strong>: logs, metrics, alarms (verify which metrics are emitted for deployments in your region)\n&#8211; <strong>Container Registry (OCIR)<\/strong>: may be used in advanced workflows (verify exact support for custom containers in current docs)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Compute (for notebooks\/jobs\/deployments)<\/li>\n<li>Storage (Object Storage; Block Volumes for notebook storage)<\/li>\n<li>Networking (VCN, subnets, gateways as required)<\/li>\n<li>IAM and Audit<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Human access via <strong>IAM users\/groups<\/strong> and compartment-scoped policies.<\/li>\n<li>Workload access via <strong>resource principals<\/strong> (recommended), enabled through <strong>dynamic groups<\/strong> + policies.<\/li>\n<li>API access via OCI SDK\/CLI using config files, instance principals, or resource principals (pattern depends on where code runs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<p>You typically choose:\n&#8211; <strong>Public access<\/strong> (simpler) for notebooks and endpoints, with careful IP restrictions if available and strong authentication.\n&#8211; <strong>Private access<\/strong> (recommended for production): notebooks and deployments in private subnets, accessed via bastion\/VPN\/FastConnect, with controlled egress (NAT) and private service access patterns.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag resources (project, notebook session, model, deployment) with environment and cost center.<\/li>\n<li>Centralize logs and set retention policies.<\/li>\n<li>Use alarms on deployment health\/latency metrics if available in your region (verify in official docs).<\/li>\n<li>Use compartments for isolation and limit broad IAM policies.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (learning lab)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User \/ Data Scientist] --&gt;|OCI Console| DS[OCI Data Science Project]\n  DS --&gt; NB[Notebook Session (JupyterLab)]\n  NB --&gt; OS[(OCI Object Storage)]\n  NB --&gt; MC[Model Catalog]\n  MC --&gt; MD[Model Deployment (HTTPS Endpoint)]\n  App[Client App] --&gt;|Predict Request| MD\n  MD --&gt;|Reads artifact| OS\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (enterprise)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Tenancy[OCI Tenancy]\n    subgraph Net[VCN (Prod)]\n      subgraph Priv[Private Subnet]\n        MD[Model Deployment&lt;br\/&gt;Private Endpoint]\n        NB[Notebook\/Job Subnet Access]\n      end\n      subgraph Sec[Security Controls]\n        NSG[NSGs \/ Security Lists]\n        RT[Route Tables]\n        NAT[NAT Gateway]\n        SGW[Service Gateway]\n      end\n    end\n\n    OS[(Object Storage Bucket&lt;br\/&gt;Datasets + Model Artifacts)]\n    VAULT[OCI Vault]\n    LOG[Logging]\n    MON[Monitoring\/Alarms]\n    AUD[Audit Logs]\n    IAM[IAM Policies&lt;br\/&gt;Compartment Isolation]\n  end\n\n  App[Internal Apps (VCN)] --&gt; MD\n  MD --&gt; OS\n  NB --&gt; OS\n  NB --&gt; VAULT\n  MD --&gt; LOG\n  MD --&gt; MON\n  IAM --&gt; NB\n  IAM --&gt; MD\n  AUD --&gt; IAM\n\n  Priv --- NSG\n  Priv --- RT\n  RT --&gt; NAT\n  RT --&gt; SGW\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">OCI account\/tenancy requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An active <strong>Oracle Cloud<\/strong> tenancy with billing enabled (or Free Tier where applicable).<\/li>\n<li>Access to a region where <strong>Data Science<\/strong> is available. Region availability can change\u2014verify in OCI docs and your tenancy\u2019s region subscriptions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>You need permissions to:\n&#8211; Create\/manage Data Science resources (projects, notebook sessions, models, deployments)\n&#8211; Create\/use networking resources (VCN\/subnet) if you\u2019re placing sessions\/deployments in your own subnets\n&#8211; Use Object Storage buckets for datasets\/artifacts<\/p>\n\n\n\n<p>Typical IAM policy patterns (examples; adjust to least privilege and your compartment structure):\n&#8211; Allow a group to manage Data Science resources in a compartment (often via a <code>datascience-family<\/code> policy).\n&#8211; Allow access to Object Storage (read\/write to buckets used for artifacts).\n&#8211; If using resource principals: create a <strong>dynamic group<\/strong> for Data Science resources and grant it access to Object Storage, Vault, etc.<\/p>\n\n\n\n<blockquote>\n<p>Policy syntax and resource types evolve. Always verify policy examples in official IAM and Data Science docs.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Science itself is commonly billed based on underlying resources you use (compute\/storage\/network). Ensure your tenancy can create the required compute shapes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tools<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Console (web UI)<\/li>\n<li>Optional:<\/li>\n<li>OCI CLI: https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/li>\n<li>OCI SDK for Python (if building automation)<\/li>\n<li>Git (for code)<\/li>\n<li>A local terminal for <code>curl<\/code> testing of endpoints<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verify Data Science availability in your target region in official OCI documentation or the Console service list.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Common limit areas (varies by tenancy\/region):\n&#8211; Maximum number of notebook sessions\n&#8211; Compute shape quotas (OCPU\/GPU)\n&#8211; Maximum number of model deployments\n&#8211; Object Storage bucket limits<\/p>\n\n\n\n<p>Check in OCI Console:\n&#8211; <strong>Governance &amp; Administration \u2192 Limits, Quotas and Usage<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Object Storage bucket for datasets\/model artifacts (recommended)<\/li>\n<li>VCN\/subnet if using private networking (recommended for production)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<blockquote>\n<p>Pricing changes and varies by region and contract. Do not rely on blog posts for exact numbers. Use the official pricing pages and your tenancy\u2019s cost tools.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Current pricing model (how you\u2019re charged)<\/h3>\n\n\n\n<p>In Oracle Cloud, <strong>Data Science<\/strong> costs typically come from the underlying resources you provision and run, such as:\n&#8211; <strong>Compute<\/strong> for notebook sessions, jobs, and model deployments (OCPU\/GPU hours)\n&#8211; <strong>Block Volume<\/strong> for notebook session storage (boot\/attached storage depending on configuration)\n&#8211; <strong>Object Storage<\/strong> for datasets, model artifacts, logs, and outputs\n&#8211; <strong>Network egress<\/strong> (data leaving OCI region to the public internet or cross-region), depending on architecture<\/p>\n\n\n\n<p>In many OCI services, the <em>service control plane<\/em> may not be billed separately, but the <em>workloads<\/em> are billed through compute\/storage\/network. <strong>Verify the Data Science pricing section in the official OCI price list<\/strong> for how Oracle currently states this.<\/p>\n\n\n\n<p>Official resources:\n&#8211; OCI pricing overview \/ price list: https:\/\/www.oracle.com\/cloud\/price-list\/\n&#8211; OCI cost estimator: https:\/\/www.oracle.com\/cloud\/costestimator.html<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions to understand<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Cost Area<\/th>\n<th>What drives cost<\/th>\n<th>Practical examples<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Notebook Sessions<\/td>\n<td>Shape (CPU\/GPU), hours running, attached storage<\/td>\n<td>Leaving a notebook running overnight is a common cost leak<\/td>\n<\/tr>\n<tr>\n<td>Jobs<\/td>\n<td>Shape, runtime duration, number of runs<\/td>\n<td>Scheduled training daily vs weekly can multiply cost<\/td>\n<\/tr>\n<tr>\n<td>Model Deployments<\/td>\n<td>Shape, number of instances (if supported), uptime<\/td>\n<td>24\/7 deployments cost more than on-demand<\/td>\n<\/tr>\n<tr>\n<td>Object Storage<\/td>\n<td>GB stored, requests<\/td>\n<td>Large datasets + many artifacts over time<\/td>\n<\/tr>\n<tr>\n<td>Block Volume<\/td>\n<td>GB provisioned, performance tier (if applicable)<\/td>\n<td>Over-provisioning notebook volumes<\/td>\n<\/tr>\n<tr>\n<td>Network<\/td>\n<td>Egress to internet\/cross-region<\/td>\n<td>Calling endpoints from outside OCI; downloading large artifacts<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Free Tier (if applicable)<\/h3>\n\n\n\n<p>Oracle Cloud offers a Free Tier program, but eligibility and included services change. <strong>Verify current Free Tier coverage for Data Science-related resources<\/strong> (compute shapes, storage) in Oracle\u2019s Free Tier documentation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (what surprises people)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Always-on model deployments<\/strong>: online endpoints running continuously can be the biggest driver.<\/li>\n<li><strong>Idle notebooks<\/strong>: developers forget to stop sessions.<\/li>\n<li><strong>Over-sized shapes<\/strong>: using GPU shapes for CPU-only workloads.<\/li>\n<li><strong>Data transfer<\/strong>: large dataset movement across regions or to on-prem without planning.<\/li>\n<li><strong>Storage sprawl<\/strong>: repeated model artifacts and intermediate outputs left in Object Storage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Logging and monitoring retention (if you export logs or keep long retention)<\/li>\n<li>CI\/CD runners or external build systems<\/li>\n<li>NAT Gateway and outbound traffic costs (architecture dependent)<\/li>\n<li>Data labeling tools (if you add a separate labeling workflow)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep datasets and endpoints in the <strong>same region<\/strong> where possible.<\/li>\n<li>Prefer <strong>private connectivity<\/strong> (FastConnect\/VPN) or in-VCN calling patterns for sensitive workloads.<\/li>\n<li>Minimize cross-region transfers for large artifacts.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use the smallest practical notebook shape; scale up only when necessary.<\/li>\n<li>Stop notebook sessions when not in use.<\/li>\n<li>Use jobs for batch workloads and schedule appropriately.<\/li>\n<li>Delete unused model deployments; recreate when needed.<\/li>\n<li>Use lifecycle policies on Object Storage buckets to transition or delete old artifacts.<\/li>\n<li>Tag resources and review cost reports by tag\/compartment.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated numbers)<\/h3>\n\n\n\n<p>A low-cost learning setup typically includes:\n&#8211; One small <strong>CPU notebook session<\/strong> running only during lab time\n&#8211; A small Object Storage bucket for a few MB\u2013GB of artifacts\n&#8211; No GPU shapes\n&#8211; A model deployment created briefly for validation, then deleted<\/p>\n\n\n\n<p>To get real numbers:\n1. Select your region and shapes in the <strong>OCI Cost Estimator<\/strong>: https:\/\/www.oracle.com\/cloud\/costestimator.html<br\/>\n2. Add compute for notebook + deployment hours, plus storage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>In production, plan for:\n&#8211; Always-on model deployment(s) with predictable baseline usage\n&#8211; Separate staging and prod deployments\n&#8211; Monitoring\/alerting overhead\n&#8211; Retraining jobs (daily\/weekly) on larger shapes\n&#8211; Data retention policies for model artifacts and training data snapshots<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab builds and deploys a small ML model end-to-end using <strong>Oracle Cloud Data Science<\/strong>. It\u2019s designed to be beginner-friendly and low-cost by using CPU shapes and a small dataset.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create an OCI Data Science <strong>Project<\/strong><\/li>\n<li>Launch a <strong>Notebook Session<\/strong> (JupyterLab)<\/li>\n<li>Train a simple scikit-learn model<\/li>\n<li>Package a minimal inference script<\/li>\n<li>Register the model in the <strong>Model Catalog<\/strong><\/li>\n<li>Create a <strong>Model Deployment<\/strong><\/li>\n<li>Invoke the endpoint and validate predictions<\/li>\n<li>Clean up resources to avoid ongoing costs<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create a project\n2. Create a notebook session\n3. Train and export a model artifact (<code>model.joblib<\/code>) and scoring code (<code>score.py<\/code>)\n4. Register the model\n5. Deploy it as an HTTPS endpoint\n6. Test with <code>curl<\/code>\n7. Delete resources<\/p>\n\n\n\n<blockquote>\n<p>Notes before you start:\n&#8211; Console screens can change. Use the service navigation and search if labels differ.\n&#8211; If any deployment packaging requirements differ in your region\/tenancy (for example, required artifact structure), <strong>verify in official docs<\/strong> and adjust accordingly.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create a compartment (recommended) and a project<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> keep lab resources isolated for cleanup and governance.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In OCI Console, create or choose a compartment (for example: <code>ds-lab<\/code>).<\/li>\n<li>Navigate to <strong>Analytics &amp; AI \u2192 Data Science<\/strong>.<\/li>\n<li>Click <strong>Projects<\/strong> \u2192 <strong>Create project<\/strong>.<\/li>\n<li>Name: <code>ds-iris-lab<\/code> (or similar)<\/li>\n<li>Select the compartment (for example: <code>ds-lab<\/code>)<\/li>\n<li>Create.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> A Data Science project exists and appears in the Projects list.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Open the project details page and confirm it\u2019s in the correct compartment.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create a notebook session (JupyterLab)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> get a managed environment to run Python ML.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Inside your project, go to <strong>Notebook Sessions<\/strong> \u2192 <strong>Create notebook session<\/strong>.<\/li>\n<li>Provide:\n   &#8211; Name: <code>iris-notebook<\/code>\n   &#8211; Compute shape: choose a small <strong>CPU<\/strong> shape (avoid GPU for this lab).\n   &#8211; Networking:  <ul>\n<li>For a quick lab, you may use a basic\/public option if offered.  <\/li>\n<li>For stricter security, select a VCN + subnet you control.  <\/li>\n<li>If you place it in a private subnet, ensure it has access to required OCI services and package repositories (via NAT\/service gateway patterns as appropriate).<\/li>\n<\/ul>\n<\/li>\n<li>Create the notebook session.<\/li>\n<li>Wait until the notebook session status is <strong>Active<\/strong> (or equivalent).<\/li>\n<li>Click <strong>Open<\/strong> (JupyterLab).<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> JupyterLab opens in your browser.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; In JupyterLab, open a Terminal and run:<\/p>\n\n\n\n<pre><code class=\"language-bash\">python3 --version\n<\/code><\/pre>\n\n\n\n<p>You should see a Python version output.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Train a simple model in the notebook<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> create a working model artifact with minimal dependencies.<\/p>\n\n\n\n<p>In JupyterLab, create a new notebook (Python 3). Run the following cells.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.1 Install\/verify Python packages<\/h4>\n\n\n\n<p>Many notebook environments already include these. If not, install them:<\/p>\n\n\n\n<pre><code class=\"language-python\">import sys\n!{sys.executable} -m pip install -q scikit-learn joblib pandas numpy\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Packages install successfully.<\/p>\n\n\n\n<p><strong>Verification:<\/strong> Import works:<\/p>\n\n\n\n<pre><code class=\"language-python\">import numpy as np\nimport pandas as pd\nfrom sklearn.datasets import load_iris\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.metrics import accuracy_score\nimport joblib\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">3.2 Train and export the model<\/h4>\n\n\n\n<pre><code class=\"language-python\"># Load a small built-in dataset\niris = load_iris()\nX = iris[\"data\"]\ny = iris[\"target\"]\n\nX_train, X_test, y_train, y_test = train_test_split(\n    X, y, test_size=0.2, random_state=42, stratify=y\n)\n\n# Simple model\nclf = LogisticRegression(max_iter=200)\nclf.fit(X_train, y_train)\n\npred = clf.predict(X_test)\nacc = accuracy_score(y_test, pred)\nacc\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You get an accuracy value (commonly &gt; 0.8 for this simple setup).<\/p>\n\n\n\n<p>Export the model:<\/p>\n\n\n\n<pre><code class=\"language-python\">joblib.dump(clf, \"model.joblib\")\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> A file named <code>model.joblib<\/code> exists in the notebook working directory.<\/p>\n\n\n\n<p><strong>Verification:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-python\">!ls -lh model.joblib\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a minimal scoring script (<code>score.py<\/code>)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> provide inference code that the deployment runtime can call.<\/p>\n\n\n\n<p>Create a file named <code>score.py<\/code> in the same directory as <code>model.joblib<\/code>.<\/p>\n\n\n\n<p>In JupyterLab, you can create a new text file, or use a notebook cell:<\/p>\n\n\n\n<pre><code class=\"language-python\">score_py = r'''\nimport json\nimport joblib\nimport numpy as np\n\n# Load the model once at startup\nMODEL = joblib.load(\"model.joblib\")\n\ndef predict(data):\n    \"\"\"\n    A simple prediction function.\n\n    Expected input (JSON):\n    {\n      \"data\": [[5.1, 3.5, 1.4, 0.2]]\n    }\n\n    Output:\n    {\n      \"predictions\": [0]\n    }\n    \"\"\"\n    # Accept either dict or JSON string depending on runtime caller\n    if isinstance(data, (str, bytes)):\n        payload = json.loads(data)\n    else:\n        payload = data\n\n    X = np.array(payload[\"data\"], dtype=float)\n    y = MODEL.predict(X)\n    return {\"predictions\": y.tolist()}\n'''\nwith open(\"score.py\", \"w\") as f:\n    f.write(score_py)\n\n!ls -lh score.py\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> <code>score.py<\/code> exists.<\/p>\n\n\n\n<p><strong>Verification test locally:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-python\">import score\nscore.predict({\"data\": [[5.1, 3.5, 1.4, 0.2]]})\n<\/code><\/pre>\n\n\n\n<p>You should see a response like:<\/p>\n\n\n\n<pre><code class=\"language-python\">{'predictions': [0]}\n<\/code><\/pre>\n\n\n\n<blockquote>\n<p>Important: OCI Data Science model deployments can have specific handler signatures and artifact structures. If your deployment later fails because it can\u2019t find the correct entry point, <strong>verify the required scoring interface in the official docs<\/strong> and adjust the script accordingly.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Package the model artifact for upload<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> create a single archive with model + scoring code.<\/p>\n\n\n\n<p>Create a zip file:<\/p>\n\n\n\n<pre><code class=\"language-python\">!zip -r model_artifact.zip model.joblib score.py\n!ls -lh model_artifact.zip\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> <code>model_artifact.zip<\/code> exists.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Register the model in the Model Catalog<\/h3>\n\n\n\n<p>There are multiple ways to register a model. The most universally accessible approach for beginners is to download the artifact and upload it via the OCI Console.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6.1 Download the artifact from JupyterLab<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In the JupyterLab file browser, right-click <code>model_artifact.zip<\/code><\/li>\n<li>Choose <strong>Download<\/strong><\/li>\n<li>Save it locally<\/li>\n<\/ul>\n\n\n\n<p><strong>Expected outcome:<\/strong> The zip file is on your machine.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6.2 Create a model entry in the project<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In OCI Console \u2192 Data Science \u2192 your project<\/li>\n<li>Go to <strong>Models<\/strong> (Model Catalog within the project\/compartment context)<\/li>\n<li>Click <strong>Create model<\/strong><\/li>\n<li>Provide:\n   &#8211; Name: <code>iris-logreg<\/code>\n   &#8211; Description: <code>Iris classifier logistic regression<\/code>\n   &#8211; Artifact: upload <code>model_artifact.zip<\/code><\/li>\n<li>Create.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> A model appears in the Models list with a version and artifact stored (typically in Object Storage managed\/linked by OCI).<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Open the model details and confirm the artifact is present and the model state is available\/active.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Create a model deployment (online endpoint)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> serve predictions via HTTPS.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the model details page, choose <strong>Create deployment<\/strong> (or navigate to <strong>Model Deployments<\/strong> and create from model).<\/li>\n<li>Provide:\n   &#8211; Name: <code>iris-endpoint<\/code>\n   &#8211; Compute shape: small CPU shape (for low cost)\n   &#8211; Replica count \/ scaling: keep minimal (often 1)\n   &#8211; Networking:<ul>\n<li>For quick validation, a public endpoint may be easiest.<\/li>\n<li>For production, use a private endpoint in a VCN subnet and call it from inside the network.<\/li>\n<\/ul>\n<\/li>\n<li>Create deployment.<\/li>\n<li>Wait until the deployment is <strong>Active<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> The deployment shows an endpoint URL.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Confirm deployment health\/status is successful.\n&#8211; Note the endpoint URL and any required authentication method.<\/p>\n\n\n\n<blockquote>\n<p>Authentication note: Depending on your deployment configuration, invoking the endpoint may require OCI IAM auth (request signing) or another supported method. If the console provides a \u201cTest\u201d feature, use it first. If you need request signing, verify the official invocation method in the Data Science docs for your deployment type.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Invoke the endpoint (prediction test)<\/h3>\n\n\n\n<p>Use either:\n&#8211; The Console \u201cTest\u201d option (if available), or\n&#8211; <code>curl<\/code> from an environment that can reach the endpoint (your laptop for public endpoints; a VM in the VCN for private endpoints).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Example request body<\/h4>\n\n\n\n<pre><code class=\"language-json\">{\n  \"data\": [[5.1, 3.5, 1.4, 0.2]]\n}\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">If the console provides a built-in test<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Paste the JSON body<\/li>\n<li>Run prediction<\/li>\n<\/ul>\n\n\n\n<p><strong>Expected outcome:<\/strong> Response includes <code>predictions<\/code> with a class id (0, 1, or 2).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">If using curl (endpoint must be reachable, auth must match)<\/h4>\n\n\n\n<p>Because authentication requirements can vary, a generic unauthenticated <code>curl<\/code> might fail with 401\/403. If your deployment is configured to require OCI IAM signed requests, you\u2019ll need an SDK\/CLI-based signed call pattern.<\/p>\n\n\n\n<p>If your deployment supports a simple HTTPS call (verify in your console\/docs), it may look like:<\/p>\n\n\n\n<pre><code class=\"language-bash\">curl -X POST \"https:\/\/&lt;your-model-deployment-endpoint&gt;\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"data\": [[5.1, 3.5, 1.4, 0.2]]}'\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> JSON response with predictions.<\/p>\n\n\n\n<blockquote>\n<p>If this step fails with authorization errors, do not weaken security. Instead, use the official signed-request method or call from an authorized OCI environment. Verify the correct invocation procedure in the Data Science model deployment documentation.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>You have successfully completed the lab if:\n&#8211; The notebook session ran training code and created <code>model.joblib<\/code>\n&#8211; The model artifact zip uploaded to the Model Catalog successfully\n&#8211; The model deployment reached an Active\/Healthy state\n&#8211; A test invocation returned a prediction<\/p>\n\n\n\n<p>Quick checklist:\n&#8211; [ ] Project created<br\/>\n&#8211; [ ] Notebook session Active and JupyterLab accessible<br\/>\n&#8211; [ ] Model trained, <code>model.joblib<\/code> created<br\/>\n&#8211; [ ] <code>score.py<\/code> works locally<br\/>\n&#8211; [ ] <code>model_artifact.zip<\/code> uploaded to Model Catalog<br\/>\n&#8211; [ ] Deployment Active<br\/>\n&#8211; [ ] Endpoint returns predictions  <\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and fixes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Notebook session won\u2019t start (shape unavailable \/ quota exceeded)<\/strong>\n   &#8211; Check <strong>Limits, Quotas and Usage<\/strong>\n   &#8211; Choose a smaller shape\n   &#8211; Request quota increase if needed<\/p>\n<\/li>\n<li>\n<p><strong>Can\u2019t install Python packages<\/strong>\n   &#8211; If notebook is in a private subnet, ensure outbound access (NAT) or approved package repository access\n   &#8211; Consider using preinstalled curated environments\n   &#8211; Verify DNS and route tables<\/p>\n<\/li>\n<li>\n<p><strong>Model deployment fails to become active<\/strong>\n   &#8211; Artifact structure may not match required runtime expectations\n   &#8211; Ensure <code>model.joblib<\/code> and <code>score.py<\/code> are at the root of the zip (as you packaged)\n   &#8211; Verify required handler signature\/entrypoint in official docs for your deployment type\n   &#8211; Check deployment logs (if available) in OCI Logging<\/p>\n<\/li>\n<li>\n<p><strong>401\/403 when invoking endpoint<\/strong>\n   &#8211; Endpoint likely requires OCI IAM signed requests\n   &#8211; Use Console test feature or official signed request procedure\n   &#8211; Ensure caller is authorized and network path is correct<\/p>\n<\/li>\n<li>\n<p><strong>Timeouts when calling endpoint<\/strong>\n   &#8211; If private endpoint: call from within VCN (or through VPN\/FastConnect)\n   &#8211; Check NSGs\/security lists and route tables\n   &#8211; Confirm DNS resolution and that the endpoint is reachable<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing costs, clean up in this order:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Delete model deployment<\/strong> (<code>iris-endpoint<\/code>)\n   &#8211; This stops continuous compute billing for online inference.<\/p>\n<\/li>\n<li>\n<p><strong>Stop and delete notebook session<\/strong>\n   &#8211; Stop first if required; then delete.<\/p>\n<\/li>\n<li>\n<p><strong>Delete model(s)<\/strong> from the Model Catalog (optional)\n   &#8211; If you want to remove artifacts and metadata.<\/p>\n<\/li>\n<li>\n<p><strong>Delete Object Storage artifacts\/buckets<\/strong> (if you created your own)\n   &#8211; Ensure no required data remains.<\/p>\n<\/li>\n<li>\n<p><strong>Delete project<\/strong> (optional)<\/p>\n<\/li>\n<li><strong>Delete compartment<\/strong> (only if it contains nothing else)<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Separate <strong>dev\/test\/prod<\/strong> using compartments (and often separate VCNs\/subnets).<\/li>\n<li>Keep data, training, and deployments in the <strong>same region<\/strong> to reduce latency and transfer costs.<\/li>\n<li>Use <strong>jobs<\/strong> for repeatable training and batch inference rather than long-running notebooks.<\/li>\n<li>Use Object Storage as the durable artifact store; treat notebook storage as ephemeral.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apply <strong>least privilege<\/strong> policies at the compartment level.<\/li>\n<li>Prefer <strong>resource principals<\/strong> for notebooks\/jobs accessing OCI services (instead of embedding API keys).<\/li>\n<li>Use <strong>dynamic groups<\/strong> to scope workload identities and restrict what they can access.<\/li>\n<li>Enforce tagging policies for ownership and environment classification.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Default to small CPU shapes; scale up only when evidence justifies it.<\/li>\n<li>Stop notebooks immediately after use.<\/li>\n<li>Delete model deployments when not needed (especially in dev).<\/li>\n<li>Apply Object Storage lifecycle policies to old artifacts and logs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Right-size shapes based on dataset size and algorithm needs.<\/li>\n<li>Use GPUs only when the training workload benefits (deep learning, large compute).<\/li>\n<li>Cache intermediate datasets carefully; avoid repeated downloads\/processing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use jobs and versioned artifacts so you can reproduce a model build.<\/li>\n<li>Keep multiple model versions in the catalog; promote via controlled processes.<\/li>\n<li>Plan rollback: deployment should be able to revert to the last known good model.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralize logs and define retention.<\/li>\n<li>Set alarms for deployment health and latency if metrics are available (verify).<\/li>\n<li>Document runbooks for common failures: deployment build errors, endpoint auth errors, quota issues.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Naming conventions (example):<\/li>\n<li><code>ds-&lt;team&gt;-&lt;env&gt;-&lt;project&gt;<\/code><\/li>\n<li><code>nb-&lt;project&gt;-&lt;user&gt;<\/code><\/li>\n<li><code>mdl-&lt;usecase&gt;-&lt;version&gt;<\/code><\/li>\n<li><code>dep-&lt;usecase&gt;-&lt;env&gt;<\/code><\/li>\n<li>Tagging keys:<\/li>\n<li><code>CostCenter<\/code>, <code>Owner<\/code>, <code>Environment<\/code>, <code>DataSensitivity<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Human access: OCI IAM users\/groups and policies.<\/li>\n<li>Workload access: resource principals via dynamic groups (recommended).<\/li>\n<li>Avoid distributing long-lived API keys to notebooks unless necessary.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI services generally provide encryption at rest and TLS in transit.<\/li>\n<li>Confirm KMS\/Vault integrations and encryption specifics for:<\/li>\n<li>Object Storage buckets<\/li>\n<li>Block volumes used by notebook sessions<\/li>\n<li>Deployment endpoints<br\/>\n<strong>Verify in official docs<\/strong> for your region and configuration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer private subnets for:<\/li>\n<li>notebooks accessing sensitive data<\/li>\n<li>production model deployments<\/li>\n<li>Use NSGs\/security lists to restrict inbound\/outbound traffic.<\/li>\n<li>Avoid public endpoints unless required; if public, enforce strict auth and monitoring.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Store secrets in <strong>OCI Vault<\/strong>, not in notebooks or code.<\/li>\n<li>Avoid printing secrets in logs.<\/li>\n<li>Rotate credentials and use short-lived access patterns where possible.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>OCI Audit<\/strong> to track API actions (who created deployments, changed policies, etc.).<\/li>\n<li>Enable and review logs for deployment failures and invocation patterns.<\/li>\n<li>Treat inference request\/response logs as sensitive; avoid logging PII.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data residency: keep regulated data in approved regions.<\/li>\n<li>Access reviews: periodic review of IAM policies and dynamic groups.<\/li>\n<li>Artifact governance: model artifacts may embed training data patterns; control distribution.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Leaving notebooks running in public networks with weak access controls<\/li>\n<li>Overbroad policies like \u201cmanage all-resources in tenancy\u201d<\/li>\n<li>Public model endpoints without strong authentication and rate limiting (where applicable)<\/li>\n<li>Logging sensitive payloads<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Private endpoints for production deployments<\/li>\n<li>Signed requests \/ IAM-based auth (or the officially recommended secure auth pattern)<\/li>\n<li>Strict compartment isolation and CI\/CD-based promotion<\/li>\n<li>Regular patching\/updates of environments and dependencies<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<blockquote>\n<p>Specific limits change over time and differ by region\/tenancy. Always check OCI limits and current Data Science docs.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Known limitations \/ common gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Quota limits<\/strong> on shapes (OCPU\/GPU) can block notebook sessions or deployments.<\/li>\n<li><strong>Packaging requirements<\/strong> for model deployment artifacts can be strict (entrypoints, file layout).<\/li>\n<li><strong>Network configuration<\/strong> can break common workflows:<\/li>\n<li>private subnet without NAT\/service gateway may block installs or Object Storage access<\/li>\n<li><strong>Always-on deployment cost<\/strong> can accumulate quickly.<\/li>\n<li><strong>Artifact sprawl<\/strong>: too many model versions and intermediate outputs in Object Storage.<\/li>\n<li><strong>Auth mismatch<\/strong>: endpoint invocation often fails when callers don\u2019t use the required auth\/signing method.<\/li>\n<li><strong>Region feature skew<\/strong>: not all regions get the same feature updates at the same time (verify in docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Migration challenges<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Moving from other platforms often requires:<\/li>\n<li>repackaging model artifacts<\/li>\n<li>reworking pipelines around OCI IAM and Object Storage<\/li>\n<li>rebuilding CI\/CD and monitoring patterns for OCI<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Vendor-specific nuances<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI compartments are central to governance; design them early.<\/li>\n<li>Resource principals\/dynamic groups are powerful, but require careful policy design to avoid privilege creep.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Within Oracle Cloud<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Oracle Machine Learning (OML) in Autonomous Database<\/strong>: strong when your data is in the database and you want in-db ML patterns.<\/li>\n<li><strong>OCI AI Services<\/strong>: better if you want prebuilt AI APIs (vision, language, speech) rather than building your own models.<\/li>\n<li><strong>Oracle Analytics Cloud<\/strong>: analytics and BI platform; not a substitute for full ML development\/deployment workflows.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Other clouds<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AWS SageMaker, Azure Machine Learning, Google Vertex AI provide similar managed ML platform capabilities with cloud-specific integrations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Open-source\/self-managed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kubeflow, MLflow + Kubernetes, self-managed JupyterHub can provide flexibility but require more operations.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Comparison table<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Oracle Cloud Data Science<\/strong><\/td>\n<td>Teams building\/deploying custom ML models on OCI<\/td>\n<td>Tight OCI integration (IAM\/VCN\/Object Storage), managed notebooks &amp; deployments<\/td>\n<td>Cloud-specific workflows; packaging\/deployment patterns must be learned<\/td>\n<td>You run on OCI and want managed ML lifecycle + secure OCI-native ops<\/td>\n<\/tr>\n<tr>\n<td>Oracle Machine Learning (OML)<\/td>\n<td>ML close to Autonomous Database data<\/td>\n<td>In-database ML and governance around DB<\/td>\n<td>Not a general-purpose model serving platform<\/td>\n<td>Data stays in ADB and you want ML without moving it<\/td>\n<\/tr>\n<tr>\n<td>OCI AI Services<\/td>\n<td>Using pretrained AI APIs<\/td>\n<td>Fast time-to-value, no training required<\/td>\n<td>Limited to offered APIs\/capabilities<\/td>\n<td>You need OCR\/NLP\/vision APIs more than custom model training<\/td>\n<\/tr>\n<tr>\n<td>AWS SageMaker<\/td>\n<td>AWS-native ML platform<\/td>\n<td>Mature ecosystem, many managed features<\/td>\n<td>AWS coupling; migration effort<\/td>\n<td>Your infrastructure is primarily on AWS<\/td>\n<\/tr>\n<tr>\n<td>Azure Machine Learning<\/td>\n<td>Azure-native ML platform<\/td>\n<td>Strong MLOps integrations<\/td>\n<td>Azure coupling; migration effort<\/td>\n<td>Your infrastructure is primarily on Azure<\/td>\n<\/tr>\n<tr>\n<td>Google Vertex AI<\/td>\n<td>GCP-native ML platform<\/td>\n<td>Unified training + serving + MLOps<\/td>\n<td>GCP coupling; migration effort<\/td>\n<td>Your infrastructure is primarily on GCP<\/td>\n<\/tr>\n<tr>\n<td>Kubeflow \/ MLflow (self-managed)<\/td>\n<td>Maximum control and portability<\/td>\n<td>Flexible, open tooling<\/td>\n<td>High ops burden (K8s, upgrades, security)<\/td>\n<td>You have platform engineering capacity and need cloud portability<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Private credit risk scoring platform<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A bank needs to deploy a credit risk model with strong security controls, private data sources, and auditability.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Data stored in Autonomous Database and Object Storage (feature snapshots)<\/li>\n<li>Data Science <strong>jobs<\/strong> run training monthly in a controlled subnet<\/li>\n<li>Model artifacts registered in the <strong>Model Catalog<\/strong><\/li>\n<li><strong>Model deployments<\/strong> exposed via private endpoints in a VCN<\/li>\n<li>Access controlled by IAM policies and dynamic groups (resource principals)<\/li>\n<li>Logs routed to OCI Logging; alarms on error rates\/latency<\/li>\n<li><strong>Why Data Science was chosen:<\/strong> OCI-native identity\/networking integration aligns with strict security requirements; managed deployment avoids self-hosting.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Reduced time to deploy model updates<\/li>\n<li>Clear audit trail for model versions and promotions<\/li>\n<li>Private inference with controlled access paths<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: Churn model MVP<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A SaaS startup wants a churn prediction endpoint for internal dashboards and customer success workflows.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Weekly export of customer metrics to Object Storage<\/li>\n<li>Data scientist trains in a small notebook session and runs scheduled jobs<\/li>\n<li>Model registered in the catalog; deployment kept small and scaled minimally<\/li>\n<li>Endpoint called by an internal service<\/li>\n<li><strong>Why Data Science was chosen:<\/strong> quick setup, low operational overhead, and direct path from notebook to deployment.<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>MVP endpoint in days instead of weeks<\/li>\n<li>Controlled costs by stopping notebooks and deleting\/recreating deployments as needed<\/li>\n<li>A foundation for future MLOps improvements<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is \u201cData Science\u201d the official Oracle Cloud service name?<\/strong><br\/>\n   Yes. In Oracle Cloud Infrastructure, the service is commonly documented as <strong>OCI Data Science<\/strong>. This tutorial uses \u201cData Science\u201d to mean that OCI service.<\/p>\n<\/li>\n<li>\n<p><strong>Is Data Science a fully managed ML platform like SageMaker\/Vertex AI?<\/strong><br\/>\n   It provides managed notebooks, jobs, model catalog, and model deployments. Exact feature parity differs across clouds\u2014evaluate based on your workflow needs.<\/p>\n<\/li>\n<li>\n<p><strong>Do I pay separately for Data Science?<\/strong><br\/>\n   Costs typically come from underlying <strong>compute, storage, and network<\/strong> resources used by notebooks, jobs, and deployments. Confirm current billing behavior in the official OCI price list.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the difference between a notebook session and a job?<\/strong><br\/>\n   Notebook sessions are interactive (ideal for exploration). Jobs are for repeatable, managed runs (better for scheduled training and batch inference).<\/p>\n<\/li>\n<li>\n<p><strong>Where should I store training data and artifacts?<\/strong><br\/>\n   Commonly in <strong>OCI Object Storage<\/strong>. Treat notebook storage as non-authoritative and keep artifacts versioned.<\/p>\n<\/li>\n<li>\n<p><strong>Can I deploy private endpoints for inference?<\/strong><br\/>\n   Private networking is a common production pattern. Exact configuration depends on your VCN\/subnet setup and current Data Science deployment options\u2014verify in official docs.<\/p>\n<\/li>\n<li>\n<p><strong>How do I authenticate a notebook to access Object Storage securely?<\/strong><br\/>\n   Prefer <strong>resource principals<\/strong> with <strong>dynamic groups<\/strong> and least-privilege policies. Avoid embedding API keys in notebooks.<\/p>\n<\/li>\n<li>\n<p><strong>How do I version models?<\/strong><br\/>\n   Use the <strong>Model Catalog<\/strong> and adopt naming\/version metadata conventions. Store training metadata and code commit references alongside model versions.<\/p>\n<\/li>\n<li>\n<p><strong>Can I run GPU training?<\/strong><br\/>\n   OCI supports GPU shapes, but availability depends on region and quota. Use GPUs when the workload benefits (deep learning, large training jobs).<\/p>\n<\/li>\n<li>\n<p><strong>How do I monitor model deployments?<\/strong><br\/>\n   Use OCI monitoring\/logging where supported. Track latency, error rates, and request volume; define alarms and runbooks. Verify available metrics in your region.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the best way to reduce cost?<\/strong><br\/>\n   Stop notebooks when idle, keep deployments minimal, delete unused endpoints, and avoid over-sizing shapes.<\/p>\n<\/li>\n<li>\n<p><strong>Can I integrate CI\/CD for model promotion?<\/strong><br\/>\n   Yes, using OCI DevOps or external CI systems, with artifacts stored in Object Storage and controlled promotion processes. Implementation details vary.<\/p>\n<\/li>\n<li>\n<p><strong>How do I keep sensitive data out of logs?<\/strong><br\/>\n   Don\u2019t log raw payloads by default. Mask PII, control log retention, and restrict log access via IAM.<\/p>\n<\/li>\n<li>\n<p><strong>Can I call a model deployment from outside OCI?<\/strong><br\/>\n   If the endpoint is public and authentication allows it, yes. For sensitive workloads, prefer private access (VPN\/FastConnect or in-VCN callers).<\/p>\n<\/li>\n<li>\n<p><strong>What causes most deployment failures?<\/strong><br\/>\n   Packaging\/entrypoint mismatches, missing dependencies, incorrect artifact structure, and networking restrictions during startup.<\/p>\n<\/li>\n<li>\n<p><strong>How do compartments help?<\/strong><br\/>\n   Compartments provide isolation boundaries for IAM policies, cost reporting, and environment separation (dev\/test\/prod).<\/p>\n<\/li>\n<li>\n<p><strong>Can Data Science replace a feature store or full MLOps suite?<\/strong><br\/>\n   It provides core ML workflow pieces, but you may still need additional governance, feature management, drift monitoring, and CI\/CD patterns depending on requirements.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Data Science<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>OCI Data Science Docs \u2014 https:\/\/docs.oracle.com\/en-us\/iaas\/data-science\/using\/<\/td>\n<td>Primary source for current features, concepts, and step-by-step guidance<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>OCI Price List \u2014 https:\/\/www.oracle.com\/cloud\/price-list\/<\/td>\n<td>Authoritative pricing reference (region\/SKU dependent)<\/td>\n<\/tr>\n<tr>\n<td>Pricing calculator<\/td>\n<td>OCI Cost Estimator \u2014 https:\/\/www.oracle.com\/cloud\/costestimator.html<\/td>\n<td>Estimate costs for notebook shapes, deployments, storage, and network<\/td>\n<\/tr>\n<tr>\n<td>Official CLI docs<\/td>\n<td>OCI CLI Installation \u2014 https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/td>\n<td>Automate Data Science and related OCI resources<\/td>\n<\/tr>\n<tr>\n<td>Architecture guidance<\/td>\n<td>OCI Architecture Center \u2014 https:\/\/docs.oracle.com\/en\/solutions\/<\/td>\n<td>Reference architectures for OCI networking, security, and deployment patterns<\/td>\n<\/tr>\n<tr>\n<td>Hands-on labs<\/td>\n<td>Oracle LiveLabs \u2014 https:\/\/livelabs.oracle.com\/<\/td>\n<td>Guided labs; search for \u201cData Science\u201d and related ML labs<\/td>\n<\/tr>\n<tr>\n<td>Official samples (GitHub)<\/td>\n<td>Oracle OCI Data Science AI Samples \u2014 https:\/\/github.com\/oracle\/oci-data-science-ai-samples<\/td>\n<td>Practical notebooks and examples aligned to OCI Data Science tooling<\/td>\n<\/tr>\n<tr>\n<td>Observability docs<\/td>\n<td>OCI Logging \u2014 https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/Logging\/home.htm<\/td>\n<td>Learn how to route and manage logs from OCI services<\/td>\n<\/tr>\n<tr>\n<td>IAM docs<\/td>\n<td>OCI IAM \u2014 https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/Identity\/home.htm<\/td>\n<td>Policies, dynamic groups, least-privilege patterns<\/td>\n<\/tr>\n<tr>\n<td>Community learning<\/td>\n<td>Oracle Cloud Community \u2014 https:\/\/community.oracle.com\/<\/td>\n<td>Discussions and real-world tips (validate against official docs)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps, cloud engineers, platform teams, beginners<\/td>\n<td>OCI fundamentals, DevOps\/MLOps adjacent practices, structured training<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Students, engineers learning tooling and platforms<\/td>\n<td>Software lifecycle, DevOps and platform practices that can support ML delivery<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations and engineering roles<\/td>\n<td>Cloud operations, reliability, governance and cost practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, operations, reliability engineers<\/td>\n<td>Monitoring, reliability, incident response patterns applicable to ML services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + AI\/automation learners<\/td>\n<td>AIOps concepts, operational analytics, automation foundations<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training and guidance (verify offerings)<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training platform (verify OCI coverage)<\/td>\n<td>DevOps engineers and cloud practitioners<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps consulting\/training marketplace (verify scope)<\/td>\n<td>Teams needing practical guidance<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support\/training services (verify scope)<\/td>\n<td>Engineers seeking hands-on operational help<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify specific OCI services)<\/td>\n<td>Architecture, automation, platform setup<\/td>\n<td>Cost governance, IaC foundations, secure networking for ML platforms<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Training and consulting services<\/td>\n<td>Enablement + implementation support<\/td>\n<td>Setting up OCI landing zones, IAM patterns, operational runbooks for Data Science deployments<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting services<\/td>\n<td>CI\/CD, observability, operations<\/td>\n<td>Building deployment pipelines, monitoring\/alerting integration, policy and tagging standards<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before Data Science (recommended prerequisites)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI fundamentals: compartments, VCN, IAM policies, Object Storage<\/li>\n<li>Basic Linux and networking concepts (subnets, routing, security lists\/NSGs)<\/li>\n<li>Python fundamentals: functions, packages, environments<\/li>\n<li>ML basics: supervised learning, train\/test split, evaluation metrics<\/li>\n<li>Git basics for version control<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after Data Science (to become production-ready)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MLOps practices: reproducible training, artifact versioning, promotion workflows<\/li>\n<li>Infrastructure as Code (Terraform on OCI) for repeatable environments<\/li>\n<li>Secure networking: private endpoints, service gateways, bastions<\/li>\n<li>Observability: logging, metrics, alarms, SLOs<\/li>\n<li>Model governance: drift monitoring patterns, bias testing, lineage (may require additional tooling)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data Scientist<\/li>\n<li>Machine Learning Engineer<\/li>\n<li>Cloud Engineer (Analytics\/AI)<\/li>\n<li>DevOps Engineer \/ Platform Engineer supporting ML platforms<\/li>\n<li>SRE\/Operations Engineer for ML inference services<\/li>\n<li>Security Engineer (IAM, network security for AI workloads)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Oracle certification offerings change. Check Oracle University \/ OCI certification listings for current credentials relevant to:\n&#8211; OCI foundations\n&#8211; OCI architect tracks\n&#8211; Analytics\/AI specialization<br\/>\nVerify current certification options in official Oracle training portals.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build and deploy a churn prediction endpoint using Object Storage datasets<\/li>\n<li>Create a scheduled job that retrains a model weekly and registers a new model version<\/li>\n<li>Secure a deployment with private networking and demonstrate in-VCN invocation<\/li>\n<li>Implement cost tagging + cleanup automation for non-prod deployments<\/li>\n<li>Create a lightweight CI pipeline that packages a model artifact and triggers deployment updates (verify supported automation patterns)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OCI<\/strong>: Oracle Cloud Infrastructure.<\/li>\n<li><strong>Compartment<\/strong>: OCI governance boundary for organizing resources and applying IAM policies.<\/li>\n<li><strong>Project (Data Science)<\/strong>: Logical container for Data Science resources.<\/li>\n<li><strong>Notebook Session<\/strong>: Managed Jupyter environment on OCI compute.<\/li>\n<li><strong>Job (Data Science)<\/strong>: Managed execution of code for repeatable training\/inference.<\/li>\n<li><strong>Model Catalog<\/strong>: Registry of model artifacts and metadata used for governance and deployment.<\/li>\n<li><strong>Model Artifact<\/strong>: Packaged files needed for inference (model binary, scoring code, metadata).<\/li>\n<li><strong>Model Deployment<\/strong>: Managed online inference endpoint hosting a model.<\/li>\n<li><strong>VCN<\/strong>: Virtual Cloud Network\u2014your private network in OCI.<\/li>\n<li><strong>Subnet<\/strong>: A segment of a VCN where resources are placed.<\/li>\n<li><strong>NSG<\/strong>: Network Security Group\u2014virtual firewall rules applied to resources.<\/li>\n<li><strong>Dynamic Group<\/strong>: IAM construct for grouping resources (workloads) by matching rules.<\/li>\n<li><strong>Resource Principal<\/strong>: Workload identity mechanism for OCI resources to call OCI APIs without user API keys.<\/li>\n<li><strong>Object Storage<\/strong>: OCI service for storing unstructured data (datasets, artifacts).<\/li>\n<li><strong>OCPU<\/strong>: Oracle CPU unit used for compute billing and sizing.<\/li>\n<li><strong>Egress<\/strong>: Outbound network traffic leaving a region or to the public internet (potential cost driver).<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Oracle Cloud <strong>Data Science<\/strong> in the <strong>Analytics and AI<\/strong> category is OCI\u2019s managed service for building, training, registering, and deploying machine learning models. It fits best when you want an OCI-native workflow: notebooks and jobs for development and repeatable runs, a model catalog for governance, and model deployments for online inference\u2014secured with OCI IAM and VCN networking.<\/p>\n\n\n\n<p>Cost management is primarily about controlling <strong>compute runtime<\/strong> (notebooks and always-on deployments), right-sizing shapes, and governing <strong>storage and artifacts<\/strong> in Object Storage. Security success depends on compartment isolation, least-privilege IAM policies, resource principals\/dynamic groups, private networking where appropriate, and disciplined logging\/auditing.<\/p>\n\n\n\n<p>Next step: follow the official documentation for your region\/tenancy and extend this lab into a repeatable pipeline using <strong>jobs<\/strong>, versioned artifacts, and production-grade IAM\/networking patterns: https:\/\/docs.oracle.com\/en-us\/iaas\/data-science\/using\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Analytics and AI<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,62],"tags":[],"class_list":["post-835","post","type-post","status-publish","format-standard","hentry","category-analytics-and-ai","category-oracle-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/835","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=835"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/835\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=835"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=835"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=835"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}