commit 32012bf4ff342b30779577408566665719ae4408 Author: 202510715122 IKHSAN MAULANA RIZKI <202510715122@mhs.ubharajaya.ac.id> Date: Thu Mar 19 22:17:14 2026 +0700 link g colab https://colab.research.google.com/drive/1pTiecTgyls_RfcPdtnMXpZ_GebF0UZyQ?usp=sharing Signed-off-by: 202510715122 IKHSAN MAULANA RIZKI <202510715122@mhs.ubharajaya.ac.id> diff --git a/link g colab b/link g colab new file mode 100644 index 0000000..4faf1ca --- /dev/null +++ b/link g colab @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","metadata":{"id":"Wf5KrEb6vrkR"},"source":["# Welcome to Colab!"]},{"cell_type":"code","source":["for i in range(1, 101):\n"," if i % 3 == 0 and i % 5 == 0:\n"," print(i, \"FizzBuzz\")\n"," elif i % 3 == 0:\n"," print(i, \"Fizz\")\n"," elif i % 5 == 0:\n"," print(i, \"Buzz\")\n"," else:\n"," print(i)"],"metadata":{"id":"pGWZZtC2fB4n","executionInfo":{"status":"ok","timestamp":1773930305691,"user_tz":-420,"elapsed":24,"user":{"displayName":"202510715122 IKHSAN MAULANA RIZKI","userId":"03999450895592639369"}},"outputId":"01517360-a5a0-4ad5-fd55-4900c12b6a2a","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["1\n","2\n","3 Fizz\n","4\n","5 Buzz\n","6 Fizz\n","7\n","8\n","9 Fizz\n","10 Buzz\n","11\n","12 Fizz\n","13\n","14\n","15 FizzBuzz\n","16\n","17\n","18 Fizz\n","19\n","20 Buzz\n","21 Fizz\n","22\n","23\n","24 Fizz\n","25 Buzz\n","26\n","27 Fizz\n","28\n","29\n","30 FizzBuzz\n","31\n","32\n","33 Fizz\n","34\n","35 Buzz\n","36 Fizz\n","37\n","38\n","39 Fizz\n","40 Buzz\n","41\n","42 Fizz\n","43\n","44\n","45 FizzBuzz\n","46\n","47\n","48 Fizz\n","49\n","50 Buzz\n","51 Fizz\n","52\n","53\n","54 Fizz\n","55 Buzz\n","56\n","57 Fizz\n","58\n","59\n","60 FizzBuzz\n","61\n","62\n","63 Fizz\n","64\n","65 Buzz\n","66 Fizz\n","67\n","68\n","69 Fizz\n","70 Buzz\n","71\n","72 Fizz\n","73\n","74\n","75 FizzBuzz\n","76\n","77\n","78 Fizz\n","79\n","80 Buzz\n","81 Fizz\n","82\n","83\n","84 Fizz\n","85 Buzz\n","86\n","87 Fizz\n","88\n","89\n","90 FizzBuzz\n","91\n","92\n","93 Fizz\n","94\n","95 Buzz\n","96 Fizz\n","97\n","98\n","99 Fizz\n","100 Buzz\n"]}]},{"cell_type":"markdown","metadata":{"id":"1edGr7JPAZyr"},"source":["## Google Colab is available in VS Code!\n","![logo.webp](data:image/webp;base64,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)\n","\n","Try the new [Google Colab extension](https://marketplace.visualstudio.com/items?itemName=Google.colab) for Visual Studio Code. You can get up and running in just a few clicks:\n","\n","* In VS Code, open the ***Extensions*** view and search for 'Google Colab' to install.\n","* Open the kernel selector by creating or opening any `.ipynb` notebook file in your local workspace and either running a cell or clicking the ***Select Kernel*** button in the top right.\n","* Click ***Colab*** and then select your desired runtime, sign in with your Google account, and you're all set!\n","\n","See more details in our [announcement blog here](https://developers.googleblog.com/google-colab-is-coming-to-vs-code)."]},{"cell_type":"markdown","metadata":{"id":"Jp6c2c5p22J0"},"source":["## 🎁 Free Pro Plan for Gemini & Colab for US College Students 🎓\n","\n","Get more access to our most accurate model Gemini 3 Pro for advanced coding, complex research, and innovative projects, backed by Colab’s dedicated high-compute resources for data science and machine learning.\n","\n","Get the Gemini free offer at [gemini.google/students](https://gemini.google/students?utm_source=colab&utm_medium=banner&utm_campaign=students_xpa_us-colab-banner). \n","Get the Colab free offer at [colab.research.google.com/signup](https://colab.research.google.com/signup). \n","Terms Apply."]},{"cell_type":"markdown","metadata":{"id":"C1XfGyQXQK1n"},"source":["## Access popular AI models via Google-Colab-AI Without an API Key\n","All users have access to most popular LLMs via the `google-colab-ai` Python library, and paid users have access to a wider selection of models. For more details, refer to the [getting started with google colab ai](https://colab.research.google.com/github/googlecolab/colabtools/blob/main/notebooks/Getting_started_with_google_colab_ai.ipynb).\n","\n"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"JQesyTg7QSU-"},"outputs":[],"source":["from google.colab import ai\n","response = ai.generate_text(\"What is the capital of France?\")"]},{"cell_type":"markdown","metadata":{"id":"-sdyeRMXPvU_"},"source":["## Explore the Gemini API\n","The Gemini API gives you access to Gemini models created by Google DeepMind. Gemini models are built from the ground up to be multimodal, so you can reason seamlessly across text, images, code, and audio.\n","\n","**How to get started?**\n","* Go to [Google AI Studio](https://aistudio.google.com/) and log in with your Google account.\n","* [Create an API key](https://aistudio.google.com/app/apikey).\n","* Use a quickstart for [Python](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_started.ipynb), or call the REST API using [curl](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/rest/Prompting_REST.ipynb).\n","\n","**Discover Gemini's advanced capabilities**\n","* Play with Gemini [multimodal outputs](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Image-out.ipynb), mixing text and images in an iterative way.\n","* Discover the [multimodal Live API](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_started_LiveAPI.ipynb ) (demo [here](https://aistudio.google.com/live)).\n","* Learn how to [analyze images and detect items in your pictures](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Spatial_understanding.ipynb\") using Gemini (bonus, there's a [3D version](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/examples/Spatial_understanding_3d.ipynb) as well!).\n","* Unlock the power of [Gemini thinking model](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/quickstarts/Get_started_thinking.ipynb), capable of solving complex task with its inner thoughts.\n"," \n","**Explore complex use cases**\n","* Use [Gemini grounding capabilities](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/examples/Search_grounding_for_research_report.ipynb) to create a report on a company based on what the model can find on internet.\n","* Extract [invoices and form data from PDF](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/examples/Pdf_structured_outputs_on_invoices_and_forms.ipynb) in a structured way.\n","* Create [illustrations based on a whole book](https://colab.research.google.com/github/google-gemini/cookbook/blob/main/examples/Book_illustration.ipynb) using Gemini large context window and Imagen.\n","\n","To learn more, check out the [Gemini cookbook](https://github.com/google-gemini/cookbook) or visit the [Gemini API documentation](https://ai.google.dev/docs/).\n"]},{"cell_type":"markdown","metadata":{"id":"Nma_JWh-W-IF"},"source":["Colab now has AI features powered by [Gemini](https://gemini.google.com). The video below provides information on how to use these features, whether you're new to Python, or a seasoned veteran.\n","\n","
\n"," \n"," Thumbnail for a video showing 3 AI-powered Google Colab features\n"," \n","
"]},{"cell_type":"markdown","metadata":{"id":"5fCEDCU_qrC0"},"source":["
\n","

What is Colab?

\n","
\n","\n","Colab, or \"Colaboratory\", allows you to write and execute Python in your browser, with\n","- Zero configuration required\n","- Access to GPUs free of charge\n","- Easy sharing\n","\n","Whether you're a **student**, a **data scientist** or an **AI researcher**, Colab can make your work easier. Watch [Introduction to Colab](https://www.youtube.com/watch?v=inN8seMm7UI) or [Colab Features You May Have Missed](https://www.youtube.com/watch?v=rNgswRZ2C1Y) to learn more, or just get started below!"]},{"cell_type":"markdown","metadata":{"id":"GJBs_flRovLc"},"source":["
\n","\n","## **Getting started**\n","
\n","\n","The document you are reading is not a static web page, but an interactive environment called a **Colab notebook** that lets you write and execute code.\n","\n","For example, here is a **code cell** with a short Python script that computes a value, stores it in a variable, and prints the result:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"gJr_9dXGpJ05","outputId":"beb4aaca-6eac-4b30-f2ff-ea4308968122"},"outputs":[{"data":{"text/plain":["86400"]},"execution_count":null,"metadata":{},"output_type":"execute_result"}],"source":["seconds_in_a_day = 24 * 60 * 60\n","seconds_in_a_day"]},{"cell_type":"markdown","metadata":{"id":"2fhs6GZ4qFMx"},"source":["To execute the code in the above cell, select it with a click and then either press the play button to the left of the code, or use the keyboard shortcut \"Command/Ctrl+Enter\". To edit the code, just click the cell and start editing.\n","\n","Variables that you define in one cell can later be used in other cells:"]},{"cell_type":"code","execution_count":null,"metadata":{"id":"-gE-Ez1qtyIA","outputId":"e8f0c2b1-3c1e-4476-f8c2-d8f31cdb5e75"},"outputs":[{"data":{"text/plain":["604800"]},"execution_count":null,"metadata":{},"output_type":"execute_result"}],"source":["seconds_in_a_week = 7 * seconds_in_a_day\n","seconds_in_a_week"]},{"cell_type":"markdown","metadata":{"id":"lSrWNr3MuFUS"},"source":["Colab notebooks allow you to combine **executable code** and **rich text** in a single document, along with **images**, **HTML**, **LaTeX** and more. When you create your own Colab notebooks, they are stored in your Google Drive account. You can easily share your Colab notebooks with co-workers or friends, allowing them to comment on your notebooks or even edit them. To learn more, see [Overview of Colab](/notebooks/basic_features_overview.ipynb). To create a new Colab notebook you can use the File menu above, or use the following link: [create a new Colab notebook](http://colab.research.google.com#create=true).\n","\n","Colab notebooks are Jupyter notebooks that are hosted by Colab. To learn more about the Jupyter project, see [jupyter.org](https://www.jupyter.org)."]},{"cell_type":"markdown","metadata":{"id":"UdRyKR44dcNI"},"source":["
\n","\n","## Data science\n","
\n","\n","With Colab you can harness the full power of popular Python libraries to analyze and visualize data. The code cell below uses **numpy** to generate some random data, and uses **matplotlib** to visualize it. To edit the code, just click the cell and start editing."]},{"cell_type":"markdown","metadata":{"id":"4_kCnsPUqS6o"},"source":["You can import your own data into Colab notebooks from your Google Drive account, including from spreadsheets, as well as from Github and many other sources. To learn more about importing data, and how Colab can be used for data science, see the links below under [Working with Data](#working-with-data)."]},{"cell_type":"code","execution_count":null,"metadata":{"colab":{"height":249},"id":"C4HZx7Gndbrh","outputId":"65838ba2-0ea9-41b7-e3f9-a725be449d3b"},"outputs":[{"data":{"text/markdown":["![Sample Visualization](data:image/png;base64,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)"],"text/plain":[""]},"metadata":{},"output_type":"display_data"}],"source":["import numpy as np\n","import IPython.display as display\n","from matplotlib import pyplot as plt\n","import io\n","import base64\n","\n","ys = 200 + np.random.randn(100)\n","x = [x for x in range(len(ys))]\n","\n","fig = plt.figure(figsize=(4, 3), facecolor='w')\n","plt.plot(x, ys, '-')\n","plt.fill_between(x, ys, 195, where=(ys > 195), facecolor='g', alpha=0.6)\n","plt.title(\"Sample Visualization\", fontsize=10)\n","\n","data = io.BytesIO()\n","plt.savefig(data)\n","image = F\"data:image/png;base64,{base64.b64encode(data.getvalue()).decode()}\"\n","alt = \"Sample Visualization\"\n","display.display(display.Markdown(F\"\"\"![{alt}]({image})\"\"\"))\n","plt.close(fig)"]},{"cell_type":"markdown","metadata":{"id":"VYV91hbKwP2J"},"source":["Colab notebooks execute code on Google's cloud servers, meaning you can leverage the power of Google hardware, including [GPUs and TPUs](#using-accelerated-hardware), regardless of the power of your machine. All you need is a browser.\n","\n","For example, if you find yourself waiting for **pandas** code to finish running and want to go faster, you can switch to a GPU Runtime and use libraries like [RAPIDS cuDF](https://rapids.ai/cudf-pandas) that provide zero-code-change acceleration."]},{"cell_type":"markdown","metadata":{"id":"vwnNlNIEwoZ8"},"source":["To learn more about accelerating pandas on Colab, see the [10 minute guide](https://colab.research.google.com/github/rapidsai-community/showcase/blob/main/getting_started_tutorials/cudf_pandas_colab_demo.ipynb) or\n"," [US stock market data analysis demo](https://colab.research.google.com/github/rapidsai-community/showcase/blob/main/getting_started_tutorials/cudf_pandas_stocks_demo.ipynb)."]},{"cell_type":"markdown","metadata":{"id":"OwuxHmxllTwN"},"source":["
\n","\n","## Machine learning\n","
\n","\n","With Colab you can import an image dataset, train an image classifier on it, and evaluate the model, all in just [a few lines of code](https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/quickstart/beginner.ipynb)."]},{"cell_type":"markdown","metadata":{"id":"ufxBm1yRnruN"},"source":["Colab is used extensively in the machine learning community with applications including:\n","- Getting started with TensorFlow\n","- Developing and training neural networks\n","- Experimenting with TPUs\n","- Disseminating AI research\n","- Creating tutorials\n","\n","To see sample Colab notebooks that demonstrate machine learning applications, see the [machine learning examples](#machine-learning-examples) below."]},{"cell_type":"markdown","metadata":{"id":"-Rh3-Vt9Nev9"},"source":["
\n","\n","## More Resources\n","\n","### Working with Notebooks in Colab\n","\n","
\n","\n","- [Overview of Colab](/notebooks/basic_features_overview.ipynb)\n","- [Guide to Markdown](/notebooks/markdown_guide.ipynb)\n","- [Importing libraries and installing dependencies](/notebooks/snippets/importing_libraries.ipynb)\n","- [Saving and loading notebooks in GitHub](https://colab.research.google.com/github/googlecolab/colabtools/blob/main/notebooks/colab-github-demo.ipynb)\n","- [Interactive forms](/notebooks/forms.ipynb)\n","- [Interactive widgets](/notebooks/widgets.ipynb)\n","\n","
\n","\n","\n","### Working with Data\n","
\n","\n","- [Loading data: Drive, Sheets, and Google Cloud Storage](/notebooks/io.ipynb)\n","- [Charts: visualizing data](/notebooks/charts.ipynb)\n","- [Getting started with BigQuery](/notebooks/bigquery.ipynb)\n","\n","
\n","\n","### Machine Learning\n","\n","
\n","\n","These are a few of the notebooks related to Machine Learning, including Google's online Machine Learning course. See the [full course website](https://developers.google.com/machine-learning/crash-course/) for more.\n","- [Intro to Pandas DataFrame](https://colab.research.google.com/github/google/eng-edu/blob/main/ml/cc/exercises/pandas_dataframe_ultraquick_tutorial.ipynb)\n","- [Intro to RAPIDS cuDF to accelerate pandas](https://nvda.ws/rapids-cudf)\n","- [Getting Started with cuML's accelerator mode](https://colab.research.google.com/github/rapidsai-community/showcase/blob/main/getting_started_tutorials/cuml_sklearn_colab_demo.ipynb)\n","\n","
\n","\n","\n","### Using Accelerated Hardware\n","
\n","\n","- [Train a CNN to classify handwritten digits on the MNIST dataset using Flax NNX API](https://colab.research.google.com/github/google/flax/blob/main/docs_nnx/mnist_tutorial.ipynb)\n","- [Train a Vision Transformer (ViT) for image classification with JAX](https://colab.research.google.com/github/jax-ml/jax-ai-stack/blob/main/docs/source/JAX_Vision_transformer.ipynb)\n","- [Text classification with a transformer language model using JAX](https://colab.research.google.com/github/jax-ml/jax-ai-stack/blob/main/docs/source/JAX_transformer_text_classification.ipynb)"]},{"cell_type":"markdown","metadata":{"id":"P-H6Lw1vyNNd"},"source":["
\n","\n","\n","\n","### Featured examples\n","\n","
\n","\n","- [Train a miniGPT language model with JAX AI Stack](https://docs.jaxstack.ai/en/latest/JAX_for_LLM_pretraining.html)\n","- [LoRA/QLoRA finetuning for LLM using Tunix](https://github.com/google/tunix/blob/main/examples/qlora_gemma.ipynb)\n","- [Parameter-efficient fine-tuning of Gemma with LoRA and QLoRA](https://keras.io/examples/keras_recipes/parameter_efficient_finetuning_of_gemma_with_lora_and_qlora/)\n","- [Loading Hugging Face Transformers Checkpoints](https://keras.io/keras_hub/guides/hugging_face_keras_integration/)\n","- [8-bit Integer Quantization in Keras](https://keras.io/guides/int8_quantization_in_keras/)\n","- [Float8 training and inference with a simple Transformer model](https://keras.io/examples/keras_recipes/float8_training_and_inference_with_transformer/)\n","- [Pretraining a Transformer from scratch with KerasHub](https://keras.io/keras_hub/guides/transformer_pretraining/)\n","- [Simple MNIST convnet](https://keras.io/examples/vision/mnist_convnet/)\n","- [Image classification from scratch using Keras 3](https://keras.io/examples/vision/image_classification_from_scratch/)\n","- [Image Classification with KerasHub](https://keras.io/keras_hub/guides/classification_with_keras_hub/)\n"]},{"cell_type":"code","source":["for i in range(1, 101):\n"," if i % 3 == 0 and i % 5 == 0:\n"," print(i, \"FizzBuzz\")\n"," elif i % 3 == 0:\n"," print(i, \"Fizz\")\n"," elif i % 5 == 0:\n"," print(i, \"Buzz\")\n"," else:\n"," print(i)"],"metadata":{"id":"hZdCft0hey7w","executionInfo":{"status":"ok","timestamp":1773930248291,"user_tz":-420,"elapsed":11,"user":{"displayName":"","userId":""}},"outputId":"27a8c11f-dff3-408d-e83b-702d68dc7a05","colab":{"base_uri":"https://localhost:8080/"}},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["1\n","2\n","3 Fizz\n","4\n","5 Buzz\n","6 Fizz\n","7\n","8\n","9 Fizz\n","10 Buzz\n","11\n","12 Fizz\n","13\n","14\n","15 FizzBuzz\n","16\n","17\n","18 Fizz\n","19\n","20 Buzz\n","21 Fizz\n","22\n","23\n","24 Fizz\n","25 Buzz\n","26\n","27 Fizz\n","28\n","29\n","30 FizzBuzz\n","31\n","32\n","33 Fizz\n","34\n","35 Buzz\n","36 Fizz\n","37\n","38\n","39 Fizz\n","40 Buzz\n","41\n","42 Fizz\n","43\n","44\n","45 FizzBuzz\n","46\n","47\n","48 Fizz\n","49\n","50 Buzz\n","51 Fizz\n","52\n","53\n","54 Fizz\n","55 Buzz\n","56\n","57 Fizz\n","58\n","59\n","60 FizzBuzz\n","61\n","62\n","63 Fizz\n","64\n","65 Buzz\n","66 Fizz\n","67\n","68\n","69 Fizz\n","70 Buzz\n","71\n","72 Fizz\n","73\n","74\n","75 FizzBuzz\n","76\n","77\n","78 Fizz\n","79\n","80 Buzz\n","81 Fizz\n","82\n","83\n","84 Fizz\n","85 Buzz\n","86\n","87 Fizz\n","88\n","89\n","90 FizzBuzz\n","91\n","92\n","93 Fizz\n","94\n","95 Buzz\n","96 Fizz\n","97\n","98\n","99 Fizz\n","100 Buzz\n"]}]}],"metadata":{"colab":{"provenance":[{"file_id":"/v2/external/notebooks/intro.ipynb","timestamp":1773930264645}]},"kernelspec":{"display_name":"Python 3","name":"python3"}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file