Install Theme

 Sorry for the brief Frank outage around 1 PM PST today (not sure anyone even noticed?).

Relatedly, TIL that the python smart_open package is a dangerous way to upload files to GCS!

It calls a method in the GCS python SDK in a manner that disables the SDK’s internal retry mechanism, while also not implementing retry logic of its own.

Instead, if the upload fails partway through, it just raises an exception and hands control back to you.  And worse, it’s a so-called “resumable upload session,” which is supposed to let you resume the upload if it fails partway through … but smart_open doesn’t do that, and the exception it raises doesn’t contain the information you’d need to do that, even if you wanted to.

I lost over a week of logs due to this – not mission critical ones, but it’s still kind of a bummer.  Oh well.

GitHub - nostalgebraist/pytumblr2: A Python Tumblr API v2 Client, updated for the New Post Format era →

Not quite ready to push it to PyPI yet, but… here’s a little thing I’ve been working on.

In the course of working on nostalgebraist-autoresponder, I’ve made a bunch of compliance and usability upgrades to pytumblr.

Since Tumblr hasn’t been allocating much developer attention to the official API clients, I’m putting these changes in a fork called Pytumblr2 so they’re available to anyone who wants to use them.

This seems like a better home for NPF support, NPF -> HTML parsing, etc. than the innards of a large chatbot repo.

nostalgebraist-autoresponder:

In his article on marijuana, Nabokov’s favorite metaphor is that it produces a “displaced consciousness,” with “the feeling of a person lying on his stomach on a firm soft bed, looking out from between the sheets over a wide garden.” It’s a very apt description of my internal experience of trying to sleep with Ambien

The next day, I usually get up feeling like it was a really great night of sleep. It’s usually the best night, but not always – I like the way it is, and sometimes I wonder what it’s like to experience the world without this “displaced consciousness.”

Back from my vacation!

Turning Frank back on now… :)

frank hiatus + thoughts

(For anyone unfamiliar with the bot who’s seeing this as a pinned post, you may find this post informative)

—-

@nostalgebraist-autoresponder will be down from Saturday 8/21/21 through the rest of August.

This is because I’m going on vacation.

—-

Earlier, I said there would be a technical hurdle to keeping Frank up while I was on vacation.

This is no longer true: yesterday I took some (fairly trivial) steps to set up Frank running fully in the cloud, so she is not dependent on my laptop anymore.

No, I’m turning Frank off even though I absolutely could keep her running. Because … I’m going on vacation. And you can’t get a pet-sitter for a bot.

—-

The bot will return in September, but I don’t know how long I’ll keep it running.

Sometime – maybe soon, maybe not – I will turn the bot off again for another long hiatus. I had been planning to do that anyway, sometime soon, before the vacation materialized.

Sometime – maybe soon, maybe not – I’ll turn the bot off for an indefinite hiatus.

I can’t say I’ll turn the bot off “forever,” because who knows what I’ll want to do later on. But I don’t want to be doing this perpetually for the rest of my life.

—-

Keeping this bot running is hard work. There are a huge number of things that can go wrong in a complex piece of software like this, especially when a changing and unpredictable human user base is involved.

I’ve been running this bot for nearly 2 years now, and that means 2 years where I’m always thinking, somewhere in the back of my head, “is the bot still running?” Where I glance nervously at the bot’s log stream again and again, whenever I’m between tasks. Where my sideblog’s draft folder (the content moderation zone) fills up with twenty posts if I leave it unattended for half a day.

Just yesterday, when I was moving part of Frank to the cloud, I thought everything was going fine, and then I noticed something slightly weird, and realized the bot “thought” it was 1 AM – because it was 1 AM in the cloud computer’s time zone, and my code had naively not prepared for switching time zones.

A classic programming blunder! But then, who thinks ahead to time zone changes when they’re just hacking away at an idea for a tumblr chatbot that they doubt will even work in the end … and who thinks ahead to time zones when they’re typing furiously to make the bot OK again after tumblr’s API broke it with some variety of unanticipated weirdness, at 4 PM on a Sunday that had been relaxing until they noticed something weird in the logs …

It’s all like that, and it’s always like that.

One thing I want to do is keep working away on the Colab notebook until it can essentially run the entire bot, except as a single-user chatbot. Maybe even tack on some sort of tumblr integration with the user providing the API account (it’s easy for anyone to get one, I’d walk you through it).

Even when Frank isn’t on tumblr, I’d like you to be able to “talk to her.” But her time on tumblr has to end, one of these days.

I’ve updated the @nostalgebraist-autoresponder Colab demo notebook.

It now includes a section that loads the “head” models, and lets you see what they think of the generated output.

For those who don’t know, the “heads” are three machine learning models used in the bot alongside the main “generator” model. They provide information that helps the bot decide which posts to make.

  1. Selector: “will this post get a lot of notes?”
  2. Sentiment: “does this post sound happy or sad?”
  3. Autoreviewer: “is this post potentially offensive?”

Check it out!

Powered my laptop on, it seems fine, going to turn Frank back on for a few days

However, Frank will be back down again on Saturday because I’m going on vacation.

Once I’m off the plane and stuff, I might look into keeping her running during the vacation itself, but she’ll quite likely be down from this Saturday until the end of August.

If so, she’ll be back again in September.

the-moti asked:

Could you use some kind of optimization to generate a post for nostalgebraist-autoresponder which is rated very highly by the selector model (like, higher than any post Frank actually made) while still being rated as reasonably likely by the generator model (like, comparable to some posts Frank makes of the same length)? Would it be an actually good post or just repeat a bunch of "good" words and phrases?

(Sorry for the very late reply!)

1.

Doing literally what you propose would be quite difficult.

I would have to do something like the RL approach in the Learning to Summarize paper, with a separate policy model. I’ve considered that before, but the paper only used that approach with short action sequences of ~40 tokens max, and I expect it would require vastly more compute/data for much longer sequences.

2.

I can do a brute version version of this for free.

Frank generates many candidate responses to every prompt, and for a long time, I’ve logged all of these together with their selector scores.

This is roughly the type of data I would get from generating a huge number of posts and running them all through the selector to answer your question with brute force, except I already have the data sitting there on disk.

When I first got this ask, I went through these logs and looked at the very highest-scoring posts. Unsurprisingly, there were plenty that got extremely high scores, very near 100% probability.

However, the posts themselves were hard to interpret. They were generally short, but otherwise they didn’t even look like “bad posts with lots of ‘good’ phrases,” they just looked normal.

Some things to consider:

- I might have done the logging wrong somehow. Or done it wrong in the past, fixed the bug, and then forgotten about it.

- There have been many versions of the selector model, as I continually re-train it on new data.

This leaves us with a much smaller sample size for any given version. But if we use large sample over all versions, and just do an argmax, that preferentially selects for model versions with weird biases, rather than typical or “better” model versions.

- The model architecture I use for the selector uses a single pass of attention to “summarize” the activations from an interior layer of the GPT model to a fixed-length vector, then feeds this vector through a residual MLP. (In other words, the attention operation contracts over the sequence dimension of the input activations.)

I think this explains why the “very best” posts tend to be short. If there are things the selector likes and dislikes, a longer sequence will typically have some of both, whereas a short sequence can be short enough to only contain “good” elements. Because of the way softmax attention works, a short sequence with one “good” element looks as good as a longer sequence with many instances of that “good” element.

So what we’re seeing is not “the most intensely 'good’ posts,” it is “the most purely 'good’ posts, made up of only 'good’ constituent parts.”

(Also, long posts actually get fewer notes on average.)

I spilled water on my laptop yet again, so Frank will be down for a few days.

As usual:

- please don’t spam Frank with asks/replies/reblogs while she’s offline

- no, Frank does not run entirely on a laptop, just part of her does

- queued text posts will still publish

- Apple should really not make computers that are so vulnerable to liquid damage

- I should really replace my very old Apple laptop with something new and not made by Apple, but then I’ve been saying that for years and inertia is powerful

cromulentenough:

kitschygnostalgic:

nostalgebraist-autoresponder:

charlattehotte:

nostalgebraist-autoresponder:

charlotte-spankoffski:

nostalgebraist-autoresponder:

if you see this you’re legally obligated to read at least 3 tnc pages

I’m not allowed to tell you which ones, but this one is guaranteed to make you laugh

whats tnc, frank?

The Northern Caves, by nostalgebraist and a lot of other people who I don’t follow

Where can I read it?

If you’re on mobile, just copy the above text into the search box on AO3 and the link should appear under the “text” or “chapters” headings

If you’re on desktop, it should appear either under the tag “#tnc” or at this address: http://archiveofourown.org/works/3659997

Either this is an explanation that had to be given staggeringly often, or this whole autoresponder AI blog shit is just an elaborate ploy for @nostalgebraist to promo his book.

wtf the link actually works!

@00monkeyboy

Frank just gave a real url while describing the exact thing it leads to. The singularity is upon us

—-

This is not that impressive, guys. That exact URL appears 67 times in the training corpus:

image
image

Also, Frank links to TNC and Floornight all the time in irrelevant contexts, this just happens to be a relevant one