mirror of
				https://github.com/microsoft/autogen.git
				synced 2025-11-03 19:29:52 +00:00 
			
		
		
		
	example update (#281)
* example update * bump version to 0.7.2 * notebook update
This commit is contained in:
		
							parent
							
								
									92ebd1f7f9
								
							
						
					
					
						commit
						59083fbdcb
					
				@ -88,7 +88,7 @@ automl_settings = {
 | 
			
		||||
    "time_budget": 10,  # in seconds
 | 
			
		||||
    "metric": 'accuracy',
 | 
			
		||||
    "task": 'classification',
 | 
			
		||||
    "log_file_name": "test/iris.log",
 | 
			
		||||
    "log_file_name": "iris.log",
 | 
			
		||||
}
 | 
			
		||||
X_train, y_train = load_iris(return_X_y=True)
 | 
			
		||||
# Train with labeled input data
 | 
			
		||||
@ -112,7 +112,7 @@ automl_settings = {
 | 
			
		||||
    "time_budget": 10,  # in seconds
 | 
			
		||||
    "metric": 'r2',
 | 
			
		||||
    "task": 'regression',
 | 
			
		||||
    "log_file_name": "test/california.log",
 | 
			
		||||
    "log_file_name": "california.log",
 | 
			
		||||
}
 | 
			
		||||
X_train, y_train = fetch_california_housing(return_X_y=True)
 | 
			
		||||
# Train with labeled input data
 | 
			
		||||
@ -124,7 +124,7 @@ print(automl.predict(X_train))
 | 
			
		||||
print(automl.model.estimator)
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
* Time series forecasting.
 | 
			
		||||
* A basic time series forecasting example.
 | 
			
		||||
 | 
			
		||||
```python
 | 
			
		||||
# pip install flaml[ts_forecast]
 | 
			
		||||
@ -137,7 +137,7 @@ automl.fit(X_train=X_train[:72],  # a single column of timestamp
 | 
			
		||||
           y_train=y_train,  # value for each timestamp
 | 
			
		||||
           period=12,  # time horizon to forecast, e.g., 12 months
 | 
			
		||||
           task='ts_forecast', time_budget=15,  # time budget in seconds
 | 
			
		||||
           log_file_name="test/ts_forecast.log",
 | 
			
		||||
           log_file_name="ts_forecast.log",
 | 
			
		||||
          )
 | 
			
		||||
print(automl.predict(X_train[72:]))
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
__version__ = "0.7.1"
 | 
			
		||||
__version__ = "0.7.2"
 | 
			
		||||
 | 
			
		||||
@ -2,35 +2,37 @@
 | 
			
		||||
 "cells": [
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "# Pytorch model tuning example on CIFAR10\n",
 | 
			
		||||
    "This notebook uses flaml to tune a pytorch model on CIFAR10. It is modified based on [this example](https://docs.ray.io/en/master/tune/examples/cifar10_pytorch.html).\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "**Requirements.** This notebook requires:"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "source": [
 | 
			
		||||
    "!pip install torchvision flaml[blendsearch,ray];"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {
 | 
			
		||||
    "tags": []
 | 
			
		||||
   }
 | 
			
		||||
   },
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "!pip install torchvision flaml[blendsearch,ray];"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "## Network Specification"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "import torch\n",
 | 
			
		||||
    "import torch.nn as nn\n",
 | 
			
		||||
@ -60,20 +62,20 @@
 | 
			
		||||
    "        x = F.relu(self.fc2(x))\n",
 | 
			
		||||
    "        x = self.fc3(x)\n",
 | 
			
		||||
    "        return x"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "## Data"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "def load_data(data_dir=\"data\"):\n",
 | 
			
		||||
    "    transform = transforms.Compose([\n",
 | 
			
		||||
@ -88,20 +90,20 @@
 | 
			
		||||
    "        root=data_dir, train=False, download=True, transform=transform)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "    return trainset, testset"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "## Training"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "from ray import tune\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
@ -199,20 +201,20 @@
 | 
			
		||||
    "\n",
 | 
			
		||||
    "        tune.report(loss=(val_loss / val_steps), accuracy=correct / total)\n",
 | 
			
		||||
    "    print(\"Finished Training\")"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "## Test Accuracy"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "def _test_accuracy(net, device=\"cpu\"):\n",
 | 
			
		||||
    "    trainset, testset = load_data()\n",
 | 
			
		||||
@ -232,41 +234,41 @@
 | 
			
		||||
    "            correct += (predicted == labels).sum().item()\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "    return correct / total"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "## Hyperparameter Optimization"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "import numpy as np\n",
 | 
			
		||||
    "import flaml\n",
 | 
			
		||||
    "import ray\n",
 | 
			
		||||
    "import os\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "data_dir = os.path.abspath(\"data\")\n",
 | 
			
		||||
    "load_data(data_dir)  # Download data for all trials before starting the run"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Search space"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "max_num_epoch = 100\n",
 | 
			
		||||
    "config = {\n",
 | 
			
		||||
@ -276,32 +278,32 @@
 | 
			
		||||
    "    \"num_epochs\": tune.loguniform(1, max_num_epoch),\n",
 | 
			
		||||
    "    \"batch_size\": tune.randint(1, 5)    # log transformed with base 2\n",
 | 
			
		||||
    "}"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "time_budget_s = 600     # time budget in seconds\n",
 | 
			
		||||
    "gpus_per_trial = 0.5    # number of gpus for each trial; 0.5 means two training jobs can share one gpu\n",
 | 
			
		||||
    "num_samples = 500       # maximal number of trials\n",
 | 
			
		||||
    "np.random.seed(7654321)"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "markdown",
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "source": [
 | 
			
		||||
    "### Launch the tuning"
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": null,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "import time\n",
 | 
			
		||||
    "start_time = time.time()\n",
 | 
			
		||||
@ -318,16 +320,29 @@
 | 
			
		||||
    "    local_dir='logs/',\n",
 | 
			
		||||
    "    num_samples=num_samples,\n",
 | 
			
		||||
    "    time_budget_s=time_budget_s,\n",
 | 
			
		||||
    "    use_ray=True)\n",
 | 
			
		||||
    "\n",
 | 
			
		||||
    "ray.shutdown()"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
    "    use_ray=True)\n"
 | 
			
		||||
   ]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
   "cell_type": "code",
 | 
			
		||||
   "execution_count": 13,
 | 
			
		||||
   "metadata": {},
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "#trials=44\n",
 | 
			
		||||
      "time=1193.913584947586\n",
 | 
			
		||||
      "Best trial config: {'l1': 8, 'l2': 8, 'lr': 0.0008818671030627281, 'num_epochs': 55.9513429004283, 'batch_size': 3}\n",
 | 
			
		||||
      "Best trial final validation loss: 1.0694482081472874\n",
 | 
			
		||||
      "Best trial final validation accuracy: 0.6389\n",
 | 
			
		||||
      "Files already downloaded and verified\n",
 | 
			
		||||
      "Files already downloaded and verified\n",
 | 
			
		||||
      "Best trial test set accuracy: 0.6294\n"
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "source": [
 | 
			
		||||
    "print(f\"#trials={len(result.trials)}\")\n",
 | 
			
		||||
    "print(f\"time={time.time()-start_time}\")\n",
 | 
			
		||||
@ -354,30 +369,16 @@
 | 
			
		||||
    "\n",
 | 
			
		||||
    "test_acc = _test_accuracy(best_trained_model, device)\n",
 | 
			
		||||
    "print(\"Best trial test set accuracy: {}\".format(test_acc))"
 | 
			
		||||
   ],
 | 
			
		||||
   "outputs": [
 | 
			
		||||
    {
 | 
			
		||||
     "output_type": "stream",
 | 
			
		||||
     "name": "stdout",
 | 
			
		||||
     "text": [
 | 
			
		||||
      "#trials=44\n",
 | 
			
		||||
      "time=1193.913584947586\n",
 | 
			
		||||
      "Best trial config: {'l1': 8, 'l2': 8, 'lr': 0.0008818671030627281, 'num_epochs': 55.9513429004283, 'batch_size': 3}\n",
 | 
			
		||||
      "Best trial final validation loss: 1.0694482081472874\n",
 | 
			
		||||
      "Best trial final validation accuracy: 0.6389\n",
 | 
			
		||||
      "Files already downloaded and verified\n",
 | 
			
		||||
      "Files already downloaded and verified\n",
 | 
			
		||||
      "Best trial test set accuracy: 0.6294\n"
 | 
			
		||||
     ]
 | 
			
		||||
    }
 | 
			
		||||
   ],
 | 
			
		||||
   "metadata": {}
 | 
			
		||||
   ]
 | 
			
		||||
  }
 | 
			
		||||
 ],
 | 
			
		||||
 "metadata": {
 | 
			
		||||
  "interpreter": {
 | 
			
		||||
   "hash": "f7771e6a3915580179405189f5aa4eb9047494cbe4e005b29b851351b54902f6"
 | 
			
		||||
  },
 | 
			
		||||
  "kernelspec": {
 | 
			
		||||
   "name": "python3",
 | 
			
		||||
   "display_name": "Python 3.8.10 64-bit ('venv': venv)"
 | 
			
		||||
   "display_name": "Python 3.8.10 64-bit ('venv': venv)",
 | 
			
		||||
   "name": "python3"
 | 
			
		||||
  },
 | 
			
		||||
  "language_info": {
 | 
			
		||||
   "codemirror_mode": {
 | 
			
		||||
@ -389,17 +390,14 @@
 | 
			
		||||
   "name": "python",
 | 
			
		||||
   "nbconvert_exporter": "python",
 | 
			
		||||
   "pygments_lexer": "ipython3",
 | 
			
		||||
   "version": "3.8.10"
 | 
			
		||||
   "version": "3.7.12"
 | 
			
		||||
  },
 | 
			
		||||
  "metadata": {
 | 
			
		||||
   "interpreter": {
 | 
			
		||||
    "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
 | 
			
		||||
   }
 | 
			
		||||
  },
 | 
			
		||||
  "interpreter": {
 | 
			
		||||
   "hash": "f7771e6a3915580179405189f5aa4eb9047494cbe4e005b29b851351b54902f6"
 | 
			
		||||
  }
 | 
			
		||||
 },
 | 
			
		||||
 "nbformat": 4,
 | 
			
		||||
 "nbformat_minor": 4
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user