Right and Wrong Things to Work On

It seems like there are two kinds of things you can work on: right and wrong things. The right things bring you closer to your goals, the wrong things take you further away from your goals or nowhere at all. I firmly believe that one's ability to choose the right things to work on largely determines one's success.

Right and wrong things to work on must always be viewed relative to a goal. One thing may be the right thing to work on to achieve goal A, but the wrong one if you want to achieve goal B.

As a person, I am very enthusiastic and full of ideas. This may seem like two positive attributes, but the combination often leads to a lack of focus. For there are many good ideas, but not all of them lead towards the same goal. If you are too easily seduced by your abundance of ideas, you end up being unfocused, and this leads you very inefficiently towards your goal.

In my opinion, that's why it's important to spend time figuring out what your goals are. It sounds simple, but personally, I find it much easier said than done! For what is the actual dream scenario if you think 5-10 years into the future? This question deserves that you make an effort to answer it, and that you regularly revisit it to see if your actions align with your long-term goals.

The clearer you are on your goals, the better you become at determining what the right and wrong things to work on are in relation to achieving your goals.

Posted

A Process for Building LLM Classifiers

Large language models (LLMs) can be prompt-engineered to solve a wide variety of tasks. While many consider chat as the primary use case, LLMs can also be used to build traditional classifiers. 

Before the rise of advanced generative text-to-text models, crafting a custom text classifier was a time-consuming process that required extensive data collection and annotation.

Nowadays, you can get your hands dirty with LLMs without worrying about annotating data. This is great as it saves you a lot of time. However, it also becomes tempting to bypass best practices for building robust machine learning applications. 

When there's no need to create a training dataset, the temptation of simply hand-tuning a prompt based on a few examples becomes strong. You might convince yourself that it will generalize to any data that might be presented to it.The challenge is, without annotations to measure accuracy or a method to assess your prompt, you can't determine its robustness once deployed.

In my recent work with LLMs, I have thought a lot about this and have developed a process that, in my experience, enables the construction of robust LLM classifiers. This method is not only more efficient but also more enjoyable to fine-tune compared to the old school way of doing it.

The following process will help you craft more robust and reliable LLM modules.

Step 1: Collect Dataset

Collect a raw, unannotated dataset representative of the data on which your classifier will be used in real-world scenarios. The dataset's size should provide the desired significance level when assessing the classifier, while remaining realistic for you to annotate and not exhausting your API call budget with OpenAI. Divide the dataset into validation and test subsets.

Step 2: Create Initial Prompt

Construct an initial prompt you believe will be effective. It should yield two outputs. The first output should articulate the model's thoughts when determining which class to assign to the input text. 

This will be useful for iterative improvements to the prompt, ensuring it aligns with the task. In accordance with the chain-of-thought method, this should improve its performance and enhance explainability. The second output should specify the class you want the LLM to categorize.

The output format should look something like this:

{ "thoughts": <rationale behind classification here>, "class": <the class the model has classified the example as here> }

Test the prompt on a few dataset samples to get a feeling og the model's comprehension of the task. Dedicate some time to refining it for optimal results. You should be confident that the LLM's has a reasonable understanding of the task.

Step 3: Run, Inspect and Annotate

Now run the hand-tuned prompt on the entire validation dataset.  For reproducibility, set the temperature to 0. Review all classified samples. If the LLM's categorization is inaccurate, correct it and document areas of misunderstanding. Use the thoughts output to understand its decision-making process. 

During annotation, you'll almost certainly discover complexities and nuances in the problem you're trying solve that didn't initially think of. Also you will likely discover ambiguities in the instruction you asked the LLM to follow, where you will have to be more clear in what you want it to do. In some cases the LLM's limits of understanding will also reveal themselves. Document these findings in an "annotation protocol", which outlines rules for managing edge cases.

Step 4: Measure Performance of Prompt

Upon completing step 3, you'll have an annotated validation dataset. This allows for the evaluation of the prompt's predictive performance. Measure the performance to gain insight into the prompt's predictive capabilities.

Step 5: Adjust Prompt

Post step 5, you'll have written notes detailing cases where the LLM misclassified data. From this, formulate a hypothesis on potential prompt modifications to enhance its accuracy. Adjust the prompt in a which you think will mitigate the errors.

Step 6: Iterate

After step 6, run the adjusted prompt on the validation dataset and measure its performance. Ideally, results should improve post-adjustment. Analyze incorrect classifications and take notes to understand the model's behavior. Repeat this process until you are satisfied with the prompt's performance or you believe that you have reached maximum performance.

Step 7: Measure Performance on Test Dataset

Now is the time. It's time to follow best practices, like the diligent and competent ML engineer you are. Now, you need to run the tuned prompt on a test set. However, your test set isn't annotated yet, presenting a significant temptation to skip this step. But you know you have to do it! If you do this, you will likely find that performance on the test dataset is a little worse. This is expected and is because you have probably overfitted your prompt to the validation dataset.

Conclusion

Congratulations, you now have an LLM classifier to solve a problem for you! For now, this is the best process I have. If you know of a better approach, I would love to hear from you. Additionally, at SEO.ai, where I work as an ML Engineer, we are constantly striving to crystallize our learnings into code. Specifically, we are developing a Python package called prompt-functions, which, in our experience, makes this process much smoother. We would love to continue the conversation on how to manage LLM applications, so please feel free to open an issue, send us a pull request or simply just reach out to me 🤗





Posted

The Human-to-Screen Ratio

I feel like I spend way too much time in front of a screen coding, compared to the time I spend interacting with people. When I talk to other people about this, some say the exact opposite. Perhaps it would be useful to define a metric for this. This way, people can measure it and strive to achieve their desired balance between screen and human interaction. We could call it the human-to-screen (H2S) metric.

Let:

H: time spent interacting with humans 
S: time spent in front of a screen


The ratio can then be defined as:

H/S

Where:

  • If > 1, more time is spent interacting with humans than in front of a screen.
  • If = 1, equal time is spent on both activities.
  • If < 1, more time is spent in front of a screen than interacting with humans.

In my daily work, I estimate my H2S ratio to be roughly 0.25. Ideally, I'd prefer it to be around 2, or maybe even higher. Interestingly, when I discuss this with others, it seems the optimal H2S ratio varies among individuals.

What's your ideal human-to-screen ratio? Is it optimal for you, or do you wish for a higher or lower ratio?

Posted

Kan ChatGPT Skabe Ny Viden? 👨‍🔬

Forleden havde vi hos seo.ai en diskussion om hvorvidt LLM'er kan skabe ny viden 🤔

Hver gang man støder ind et spørgsmål af typen:

"𝗞𝗮𝗻 𝗔𝗜 𝗫?"

Så føler jeg tit at det er brugbart at stille spørgsmålet:

"𝗞𝗮𝗻 𝗺𝗲𝗻𝗻𝗲𝘀𝗸𝗲𝗿 𝗫?"

Altså i det her tilfælde:

"𝗞𝗮𝗻 𝗺𝗲𝗻𝗻𝗲𝘀𝗸𝗲𝗿 𝘀𝗸𝗮𝗯𝗲 𝗻𝘆 𝘃𝗶𝗱𝗲𝗻?"

Smag lige på de to spørgsmål når de står ved siden af hinanden:

𝟭. 𝗞𝗮𝗻 𝗔𝗜 𝘀𝗸𝗮𝗯𝗲 𝗻𝘆 𝘃𝗶𝗱𝗲𝗻?

𝟮. 𝗞𝗮𝗻 𝗺𝗲𝗻𝗻𝗲𝘀𝗸𝗲𝗿 𝘀𝗸𝗮𝗯𝗲 𝗻𝘆 𝘃𝗶𝗱𝗲𝗻?

Svaret på nummer 1. kender jeg ikke, men jeg er faktisk heller ikke sikker på svaret på 2. 😅

Når man tænker over det, så er spørgsmålet måske lidt mere nuanceret end først antaget. For er ny viden ikke noget man erfarer fra den virkelige verden?

Og er det så ikke unfair over for LLM'er at mennesker i langt højere grad har adgang til den virkelige verden 🤔




Posted

Langt Fra Alle Bruger ChatGPT

Jeg bruger seriøst ChatGPT konstant, når jeg arbejder! Jeg bruger det til at:

  • skrive kode
  • visualisere data
  • forklare kode, som andre har skrevet
  • teste kode
  • sparre omkring best practices og arkitektur
  • lære at kode
  • og meget, meget mere

Et slag på tasken er, at ChatGPT i gennemsnit øger min produktivitet med 35%. Til nogle opgaver øger ChatGPT min produktivitet med adskillige 1000%. Der er sågar ting, jeg kaster mig ud i, fordi jeg har ChatGPT, som jeg ellers ikke ville gøre. Og så er der det aspekt, at jeg også overordnet skriver bedre kode, fordi jeg har en sparringspartner, som altid er online.

Når jeg taler med mine kollegaer i tech-branchen, er det langt fra alle, der bruger ChatGPT. Når jeg tænker på, hvor meget værdi jeg får ud af ChatGPT, kan jeg slet ikke fatte, at alle udviklere ikke bruger det vildt meget!

Fra mit synspunkt ligger der stadigvæk et kæmpe uudnyttet produktivitetspotentiale og lurer lige om hjørnet!


Posted

ChatGPT er Ikke en Database

Den generative AI-teknologi er i rivende udvikling. Dog har avancerede modeller som GPT-3.5 og GPT-4 en udfordring: De har tendens til at generere udsagn, som er usande. ChatGPT, en populær bruger af generativ AI, møder ofte kritik for netop dette.

Spørgsmålet er, om vi forventer, at generativ AI skal agere som en alvidende vidensdatabase, der har styr på alle fakta i verden. Eller er dette måske den forkerte tilgang til at forstå disse store sprogmodeller?

En alternativ tankegang kan være at opfatte modeller som GPT-3.5 og GPT-4, også kaldet Large Language Models (LLM'er), som små ræsonnementmotorer. Motorer som kan løse mere fleksible og komplekse problemer end traditionel programmering. Ved at se generativ AI i dette lys, kan det måske udvide vores forståelse af teknologien og gøre os i stand til at tænke i gunstige anvendelsesmuligheder inden for AI-teknologi.

Posted

To Typer af Nysgerrighed

Efterspørgslen efter viden om kunstig intelligens er steget markant inden for det seneste halve år, siden udgivelsen af ChatGPT. Mig selv og mine kolleger, der arbejder med AI, bliver regelmæssigt kontaktet af medier og organisationer, der ønsker præsentationer om kunstig intelligens for at få mere indsigt i, hvad der sker i øjeblikket.

Verden er nysgerrig på AI, og det er selvfølgelig utrolig smigrende for os, der har viden om emnet, da vores viden pludselig er blevet værdifuld. I mine samtaler med mennesker og mine observationer af, hvordan folk taler om kunstig intelligens i medierne, har jeg identificeret to typer nysgerrighed.

Type 1: Den orienterende nysgerrighed 

Den mest almindelige type nysgerrighed, jeg oplever. Det er den nysgerrighed, folk har om et emne, fordi det påvirker deres liv på den ene eller anden måde. Måske er deres erhverv ved at blive disrupt'et. Måske er de investorer, der ønsker at placere deres penge et sted, hvor de kan tjene penge på AI. Måske er de ledere i en virksomhed og ønsker at vide, hvordan deres ansatte kan blive mere effektive med generativ kunstig intelligens.

Type 2: Den platoniske nysgerrighed 

Desværre oplever jeg mindre ofte denne type nysgerrighed. Det er den type nysgerrighed, hvor folk ønsker at forstå emnet, fordi det giver dem en fornemmelse af tilfredsstillelse og de får et kick hver eneste gang de forstår emnet dybere. Mennesker med denne type nysgerrighed bruger den viden de får, til at forme deres mentale model af verden, så de på den måde kan tænke vildere tanker. De bruger viden som brændstof til deres forestilling om, hvordan verden hænger sammen, og hvad der er muligt. De har en slags kærlighedsforhold til rå viden.

Personligt synes jeg, at Type 2 er de sjoveste at snakke med 😁


Posted

Hvad GPT-4 mangler for at blive en AGI

En ting, som jeg har bemærket ved GPT-4 og resten af de generative sprogmodeller, er deres manglende temporale dimension. Det eneste tidspunkt, hvor GPT-4's neuroner er aktiverede, er når den bliver promptet af et menneske.

Menneskers neuroner er derimod konstant aktive. Uanset om et menneske har en samtale med et andet menneske eller bare sidder og stirrer ud i luften, så kører det neurale netværk og modtager data ustandseligt i den temporale dimension.

Hvis man skulle give et menneske de samme forudsætninger som GPT-4, ville det svare til, at menneskets hjerne kun blev aktiveret, når andre mennesker valgte at kommunikere med det.

Vi mennesker har en form for "idle tilstand", som GPT-4 ikke har - en tilstand hvor vi bare modtager input og har tid til at tænke og dyrke vores bevidsthed.

Posted

LLM FOMO

Ikke nok med at OpenAI har åbnet API'et til ChatGPT, de har også gjort den 10x billigere ift de tidligere GPT-3.5 modeller. Her er en kommentar på HackerNews, som understreger hvor vanvittigt det i sig selv er 👇


Der kommer uden tvivl en massiv eksplosion i anvendelser af den her teknologi i det næste stykke tid! Mange (inklusiv mig selv) har formentligt en eller anden grad af FOMO følelse og over-excitement som følge af den her rivende udvikling. 

Selvom det er svært, så prøver jeg personligt at holde koldt vand i blodet og ikke stresse mig selv totalt ud af alle de muligheder og ideer som konstant popper op i mit hoved ifb med det her 🙏 Den her bølge kommer til at vare længe og der vil være massere af muligheder for at tappe ind i den løbende. Vi skal nok nå det alle sammen, det er jeg overbevist om! 🤗


Posted

PromptOps

Det er super udfordrende at udvikle software applikationer med store sporgmodeller! Hovedsagligt fordi man ikke kan 100% styre med hvad AI modellerne finder på at generere.

Der bliver dog forsket intensivt i metoder til at prompte sprogmodellerne så de bliver mere konsistente og nøjagtige i deres output. Ja, der er faktisk efterhånden opstået så mange metoder til at prompte sprogmodeller at det er blevet en hel profession i sig selv at gøre.

Den nye profession indenfor AI og Machine Learning er efterhånden blevet døbt Prompt Engineering. Og hvis man tror at det bare en døgnflue trend, som handler om at flere og flere folk har det sjovt med ChatGPT, så er det fordi man ikke opmærksom på hvad der hvad der rør sig. Man nemlig nogle helt nye ting med den her teknologi og på nuværende tidspunkt virker det kun til at være fantasien som sætter grænserne for hvad der er muligt.

Men det der med at sætte store sprogmodeller i produktion uden at være helt sikker på hvad de fortæller brugerne, er lidt en pain for mange. Derfor bliver det i stigende grad nødvendigt med "PromptOps" i takt med at Prompt Engineering af vinder frem i flere og flere software applikationer. Altså en måde hvorpå man struktureret kan styre sin prompt udvikling. Hvis du vil have et lille smugkig ind i fremtiden for dette felt, vil jeg anbefale, at du sætter dig ind i open source-projektet og Python-pakken langchain.

https://github.com/hwchase17/langchain

Hvis du er interesseret i at forstå, hvad det her Python bibliotek kan gøre for udvikling af applikationer med generativ AI, kan jeg garantere et mind-blow!




Posted