pfost-bit commited on
Commit
e9d7ab4
·
verified ·
1 Parent(s): 55b6f3e

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +17 -2
README.md CHANGED
@@ -30,7 +30,15 @@ There are many surf forecasting models available, including the WAVEWATCH model
30
 
31
  ### Data
32
 
33
- The dataset for this task was created through a pipline that I programmed in python. The data consists of two functional blocks that were aquired online. The actual NOAA buoy data comes from the [Iowa State University Mesonet](https://mesonet.agron.iastate.edu/wx/afos/list.phtml?by=cccc&source=AKQ&pil=CWF&year=2025&month=9&day=15&drange=yes&year2=2025&month2=9&day2=24&view=grid&order=asc), they have an api that allows for previous days forecasts to read in as a text file. In order to generate human specific sounding forecast from this data I needed examples that could be combined with specific forecast dates. This data was aquired by scraping the forecast from a local surf shop located in Wrightsville Beach, North Carolina. This surf observation is compiled each day by a veteran surfer, and can be seen [here](https://wblivesurf.com/todays-surf/). Essentially I wrote a bot that retrieves these two pieces of information and combines it into a text file. The intruction column is then created, this column gives the model its prompt. It comes in the followng form:
 
 
 
 
 
 
 
 
34
 
35
  ```{python}
36
  instruction_text = (
@@ -49,4 +57,11 @@ The dataset for this task was created through a pipline that I programmed in pyt
49
  ```
50
  Where the `prompt_text` is the specific text from the buoy data and the `examples_text` is a list of three output examples randomly sampled from the training set.
51
 
52
- The dataset can be found [Here](pfost-bit/surf_forecaster_dataset)
 
 
 
 
 
 
 
 
30
 
31
  ### Data
32
 
33
+ The dataset for this task was created through a pipline that I programmed in python. The data consists of two functional blocks that were aquired online. The actual NOAA buoy data comes from the [Iowa State University Mesonet](https://mesonet.agron.iastate.edu/wx/afos/list.phtml?by=cccc&source=AKQ&pil=CWF&year=2025&month=9&day=15&drange=yes&year2=2025&month2=9&day2=24&view=grid&order=asc), they have an api that allows for previous days forecasts to read in as a text file. In order to generate human specific sounding forecast from this data I needed examples that could be combined with specific forecast dates. This data was aquired by scraping the forecast from a local surf shop located in Wrightsville Beach, North Carolina. This surf observation is compiled each day by a veteran surfer, and can be seen [here](https://wblivesurf.com/todays-surf/). Essentially I wrote a bot that retrieves these two pieces of information and combines it into a text file.
34
+
35
+ Using the sklearn library I performed a train-test split prior to implementing any training pipeline. I used an 80/10/10 Train/Test/Validation Split. The validation data is unseen by the training at all points until final metrics are calculated.
36
+
37
+ The dataset can be found [Here](pfost-bit/surf_forecaster_dataset).
38
+
39
+ ### Methodology
40
+
41
+ The training for this task has two distinct parts. The model is trained using in context learning with random sampling. When the model was trained, each prompt had three randomly selected examples from the training dataset as an input. The model was then asked to generate a response to this prompt, using the examples as a guide. Here is an example:
42
 
43
  ```{python}
44
  instruction_text = (
 
57
  ```
58
  Where the `prompt_text` is the specific text from the buoy data and the `examples_text` is a list of three output examples randomly sampled from the training set.
59
 
60
+ This was then passed to fine-tuning using the LoRA methodology. I wrote a python file leveraging the wandb library that swept over the different hyperparameters available in the LoRA training and saved the model with the best validation loss scores. In this case the best LoRA hyperparameters were as follows:
61
+
62
+ ```{python}
63
+ learning_rate = 0.0003995209593890016
64
+ lora_alpha = 128
65
+ lora_dropout = .1
66
+ lora_r = 64
67
+ ```